最近在学东西的时候发现自己对于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: