Drcus | 王亚振

Drcus | 王亚振

随便写,记录点东西

node npm 记录事项

发布于:  

nodenpm 使用注意事项, 这里记录一下 .

npm install

npm install 是我们使用频率最高的命令之一了.

npm inpm install 的快捷方式

直接使用 npm i 安装的模块是不会写入 package.jsondependencies (或 devDependencies),需要额外加个参数:

  1. npm i express --save/npm i express -S (安装 express,同时将 "express": "^4.14.0" 写入 dependencies )
  2. npm i express --save-dev/npm i express -D (安装 express,同时将 "express": "^4.14.0" 写入 devDependencies )
  3. npm i express --save --save-exact (安装 express,同时将 "express": "4.14.0" 写入 dependencies )

第三种方式将固定版本号写入 dependencies,建议线上的 Node.js应用都采取这种锁定版本号的方式,因为你不可能保证第三方模块下个小版本是没有验证 bug 的.

运行以下命令:

npm config set save-exact true

这样每次 npm i xxx --save 的时候会锁定依赖的版本号,相当于加了 --save-exact 参数。

npm shrinkwrap

上面说的锁定依赖的版本, 但是锁定的只是最外一层的依赖, 而里层依赖的模块的 package.json 有可能写的是 "express": "*"

为了彻底锁定依赖的版本, 通过运行 npm shrinkwrap(不管嵌套多少层)会在当前目录下产生一个 npm-shrinkwrap.json,里面包含了通过 node_modules 计算出的模块的依赖树及版本。

只要目录下有 npm-shrinkwrap.json 则运行 npm install 的时候会优先使用 npm-shrinkwrap.json 进行安装,没有则使用 package.json 进行安装。

注意: 如果 node_modules 下存在某个模块(如直接通过 npm install xxx 安装的)而 package.json 中没有,运行 npm shrinkwrap 则会报错。另外,npm shrinkwrap 只会生成 dependencies的依赖,不会生成 devDependencies 的。


感谢nswbmw的文章

厚颜一下 ~^_^~

赏赐