如何确保npm install使用来自npm-shrinkwrap.json的数据

时间:2016-09-03 10:34:43

标签: javascript node.js npm npm-shrinkwrap

在我的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.jsonhttps://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,结果是一样的。

0 个答案:

没有答案