大家在调试node系列的程序的时候,一般少不了使用npm安装依赖,然后再执行npm run命令,而大家可能不知道的是,npm run包含着两个潜规则。

苏南大叔:深入理解npm run命令,run命令的两条潜规则 - npm-run-hero
深入理解npm run命令,run命令的两条潜规则(图4-1)

在本文中,苏南大叔描述的就是npm run的潜规则:prepost。而且在查看本文的内容前,您一定要知晓:npm run命令都是定义在package.json文件的scripts节点里面的。测试环境:macnpm@6.14.3

基本定义

下面是个例子,package.json定义如下:

{
  "name": "nnn",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "echo \"test\"",
    "predev": "echo \"before dev\"",
    "dev": "echo \"deving\"",
    "postdev": "echo \"after dev\""
  },
  "author": "sunan",
  "license": "ISC"
}

苏南大叔:深入理解npm run命令,run命令的两条潜规则 - package-json
深入理解npm run命令,run命令的两条潜规则(图4-2)

潜规则一:npm startnpm run start

对于命令npm run ***,如果***start字样,就可以省略run字样。这个是目前为止,苏南大叔知道的唯一可以省略run字样的命令。是不是有其他的?有的话,请留言哦。

下面的两个命令是等同的:

npm start
npm run start

苏南大叔:深入理解npm run命令,run命令的两条潜规则 - npm-start
深入理解npm run命令,run命令的两条潜规则(图4-3)

潜规则二:prepost

对于某个命令***,如果定义:

  • pre***,那么就会在npm run ***之前运行。
  • pos***,那么就会在npm run ***之后运行。
"scripts": {
    "start": "echo \"test\"",
    "predev": "echo \"before dev\"",
    "dev": "echo \"deving\"",
    "postdev": "echo \"after dev\""
  },

那么,当***dev的时候,执行npm run dev的话,结果如下:

苏南大叔:深入理解npm run命令,run命令的两条潜规则 - npm-run-dev
深入理解npm run命令,run命令的两条潜规则(图4-4)

***可以是start哦,在这个语境下,start是没有特殊身份的,也符合prepost潜规则。

相关链接

总结

当然,对于特殊的start命令,定义prestartpoststart,也是可以生效的。npm的这个prepost的潜规则,是苏南大叔在看httptoolkit的源码的时候,发现的。嘿嘿,有点孤落寡闻了。更多npm的相关文章,请点击苏南大叔的博客:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

 【加群】加入QQ群【175454274】和大家一起讨论这个问题

 【源码】本文代码片段及相关软件,请点此获取

 【绝密】秘籍文章入口,仅传授于有缘之人   npm

本站的忠实读者小伙伴,正在阅读下面这些文章: