本文已参与「新人创作礼」活动,一起开启掘金创作之路。
描述
script是package.json文件的一个属性,支持许多内置命令、预设生命周期事件以及自定义脚本命令。它们都可以被npm run-script <stage>或者npm run <stage>来执行,与此同时,带有pre和post前缀的相应命令也将被执行(在对应的时机)。(比如: premyscript,myscript,postmyscript)。依赖包中的脚本可以通过npm explore <pkg> -- npm run <stage>来执行。
Pre & Post 命令
要为package.json中script模块中的命令创建pre和post命令只需创建其他匹配name增加pre或者post前缀即可。
{
"scripts": {
"precompress": "{{ executes BEFORE the `compress` script }}",
"compress": "{{ run command to compress files }}",
"postcompress": "{{ executes AFTER `compress` script }}"
}
}
生命周期命令
这是一些特殊的生命周期脚本,除了在对应pre和post的时机,在某些特定情况下也会执行。
prepare, prepublish, prepublishOnly, prepack, postpack
-
prepare(since npm@4.0.0)- 在
pack之前执行 - 在
publish之前执行 - 不带参数的
npm install时执行 - 在
prepublish之后,prepublishOnly之前执行 - **提示:**如果一个包通过git下载,包含
prepare命令,在打包和下载之前它的dependencies和devDependencies将被下载,它的prepare命令将执行
- 在
-
prepublish(DEPRECATED)- 和
prepare一样
- 和
-
prepublishOnly- 仅在
npm publish的时候执行,时机在prepare之前pack之后
- 仅在
-
prepack- 在
npm pack、npm publish和下载一个git作为依赖的依赖包 - 提示:
npm run pack和npm pack是不一样的。npm run pack是执行用户定义的指令名称,npm pack是cli定义的命令。
- 在
-
postpack- 在
tarball被生成移除之后执行
- 在
操作命令对应生命周期
-
npm publish
- prepublishOnly
- prepare
- prepublish
- publish
- postpublish
-
npm pack
- prepack
- postpack
-
npm install
- preinstall
- install
- postinstall
-
Also triggers
- prepublish (when on local)
- prepare (when on local)
-
npm start
- prestart
- start
- poststart
默认值
npm将定义依稀命令的默认值基于大概要项目
"start": "node server.js":
如果项目根目录中有server.js文件,那么npm将默认执行命令node server.js。
"install": "node-gyp rebuild":
如果项目根目录中有binding.gyp文件,并且没有定义你自己install或者preinstall命令,npm将通过node-gyp编译设置默认install命令