在我的javascript项目中,我想冻结依赖项。为此,我使用的是npm-shrinkwrap https://docs.npmjs.com/cli/shrinkwrap
我做的是文档中写的东西,但是它有效,但我找不到任何证据表明安装确实使用了来自文件npm-shrinkwrap.json的数据
这是一个更详细的解释。
我有一个超级简单的js项目:
bessarabov@air:~/shrinkwrap$ ls
package.json
bessarabov@air:~/shrinkwrap$ cat package.json
{
"dependencies" : {
"express" : "4.14.0",
"moment" : "2.14.1"
}
}
然后我运行npm install
(这是日志 - https://gist.github.com/bessarabov/9920d6dcb1cd71e504c6fe561e39643f)然后我运行:
bessarabov@air:~/shrinkwrap$ npm shrinkwrap
wrote npm-shrinkwrap.json
因此,在运行这两个命令后,我得到了新目录node_modules
和一个新文件npm-shrinkwrap.json
。
bessarabov@air:~/shrinkwrap$ ls
node_modules npm-shrinkwrap.json package.json
然后我删除已安装的库:rm -rf node_modules/
并再次运行npm install
。并且日志与没有npm-shrinkwrap.json
(https://gist.github.com/bessarabov/33c9421744582501482e4f00453f9d38)
所以,我不确定第二个npm install
是否真正使用npm-shrinkwrap.json
文件中的数据。我想找到一种在日志中查看使用npm-shrinkwrap.json
的方法。
我正在使用:
bessarabov@air:~/shrinkwrap$ npm --version
3.3.12
bessarabov@air:~/shrinkwrap$ node --version
v5.3.0
但我也尝试过节点6.5.0,结果是一样的。