npm script介绍(翻译)

328 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

描述

scriptpackage.json文件的一个属性,支持许多内置命令、预设生命周期事件以及自定义脚本命令。它们都可以被npm run-script <stage>或者npm run <stage>来执行,与此同时,带有prepost前缀的相应命令也将被执行(在对应的时机)。(比如: premyscript,myscript,postmyscript)。依赖包中的脚本可以通过npm explore <pkg> -- npm run <stage>来执行。

Pre & Post 命令

要为package.jsonscript模块中的命令创建prepost命令只需创建其他匹配name增加pre或者post前缀即可。

{
  "scripts": {
    "precompress": "{{ executes BEFORE the `compress` script }}",
    "compress": "{{ run command to compress files }}",
    "postcompress": "{{ executes AFTER `compress` script }}"
  }
}

生命周期命令

这是一些特殊的生命周期脚本,除了在对应prepost的时机,在某些特定情况下也会执行。

    prepare, prepublish, prepublishOnly, prepack, postpack

  • prepare (since npm@4.0.0)

    • pack之前执行
    • publish之前执行
    • 不带参数的npm install时执行
    • prepublish之后,prepublishOnly之前执行
    • **提示:**如果一个包通过git下载,包含prepare命令,在打包和下载之前它的dependenciesdevDependencies将被下载,它的prepare命令将执行
  • prepublish (DEPRECATED)

    • prepare一样
  • prepublishOnly

    • 仅在npm publish的时候执行,时机在prepare之前pack之后
  • prepack

    • npm packnpm publish和下载一个git作为依赖的依赖包
    • 提示:npm run packnpm pack是不一样的。npm run pack是执行用户定义的指令名称,npm packcli定义的命令。
  • 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命令