最近在学东西的时候发现自己对于package.json里scripts中的内容理解不到位,所以重新系统的学习一下:
- 概念:
npm 允许在package.json
文件里面,使用scripts
字段定义脚本命令。
npm 脚本的原理非常简单。每当执行npm run
,就会自动新建一个 Shell,在这个 Shell 里面执行指定的脚本命令。因此,只要是 Shell(一般是 Bash)可以运行的命令,就可以写在 npm 脚本里面。比较特别的是,npm run
新建的这个 Shell,会将当前目录的node_modules/.bin
子目录加入PATH
变量,执行结束后,再将PATH
变量恢复原样。
这意味着,当前目录的node_modules/.bin
子目录里面的所有脚本,都可以直接用脚本名调用,而不必加上路径。
- 使用:
- 通配符:
*
表示任意文件名,**
表示任意一层子目录 - 传参:使用
--
标明 - 执行顺序:并行执行(即同时的平行执行),可以使用
&
符号;如果是继发执行(即只有前一个任务成功,才执行下一个任务),可以使用&&
符号 - 默认值:
npm run start
的默认值是node server.js
,前提是项目根目录下有server.js
这个脚本;npm run install
的默认值是node-gyp rebuild
,前提是项目根目录下有binding.gyp
文件。 - 钩子:npm 脚本有
pre
和post
两个钩子。
6.简写形式:
npm start
是npm run start
npm stop
是npm run stop
的简写npm test
是npm run test
的简写npm restart
是npm run stop && npm run restart && npm run start
的简写
7.变量
npm 脚本有一个非常强大的功能,就是可以使用 npm 的内部变量。首先,通过npm_package_
前缀,npm 脚本可以拿到package.json
里面的字段。
References: