在以前的文章里面,苏南大叔描述过两个会被自动执行的命令,即:prepost。本文里面,苏南大叔再来描述一个类似的命令,叫prepare,也是会被自动执行的。这个prepare的执行命令的使用场景是什么呢?

苏南大叔:深入理解npm命令,npm i之前可被自动执行的命令prepare - npm-prepare-hero
深入理解npm命令,npm i之前可被自动执行的命令prepare(图4-1)

大家好,这里是苏南大叔的“程序如此灵动”博客,这里讲述苏南大叔和计算机代码的故事。本文讲述npmprepare命令。本文的测试环境:win10node@16.14.2npm@8.3.0

测试代码

可以先使用npm init命令,先初始化一个npm项目。

苏南大叔:深入理解npm命令,npm i之前可被自动执行的命令prepare - 新建packagejson
深入理解npm命令,npm i之前可被自动执行的命令prepare(图4-2)

然后配置scripts字段,增加新的内置命令prepare。注意这里配置的命令,是在终端里面可以执行的,比如:输出一句话使用的是echo,而不是nodejs里面的console.log()

{
  "name": "npm",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "prepare": "echo \"在npm i之前会自动执行\""
  },
  "author": "",
  "license": "ISC"
}

苏南大叔:深入理解npm命令,npm i之前可被自动执行的命令prepare - npm-i-prepare
深入理解npm命令,npm i之前可被自动执行的命令prepare(图4-3)

触发方式

执行npm i的时候,就会自动执行prepare命令。使用yarn安装的时候,也会自动执行。

苏南大叔:深入理解npm命令,npm i之前可被自动执行的命令prepare - yarn也会自动执行
深入理解npm命令,npm i之前可被自动执行的命令prepare(图4-4)

执行的先后顺序是:先执行安装,然后再prepare,也就是说,如果在prepare命令里面配置了只有被安装的包才能执行的命令的话,是没有问题的。比如下面的这个配置:

{
  "name": "npm",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "prepare": "husky install"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "husky": "^7.0.4"
  }
}

这个例子里面是先安装husky,然后再执行定义在prepare里面的husky install命令。prepare听起来像是在什么事情之前执行的,但是这里确实在npm install这件事情之后执行的。可能prepare的是后续的run命令吧。

相关文章

综述

在这里,prepare实际上是个潜规则命令,在npm i的时候,会自动执行prepare命令。更多npm经验文章,请点击下面的链接:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。