我有一个Node.js应用程序,其中包含npm-shrinkwrap.json
。当我本地运行npm install
时,它会安装npm-shrinkwrap.json
中指定的版本,但是当我将其推送到Heroku(Cedar堆栈上)时,似乎忽略了Shrinkwrap并仅安装最新版本。
我做错了什么吗?我不需要检查node_modules
,对吗?
正如你在回答中所说,当Heroku编写Nodejs buildpack时,特性npm shrinkwrap
并不存在。
然而,从1.1.2版本开始,npm install
首先尝试使用npm-shrinkwrap.json
,如果失败则会回退到package.json
。这意味着Heroku也支持它(即使在Heroku编写他们的代码时该特性并未被构思)。Isaacs 太棒了。
所以,只需在你的package.json
中添加:
"engines": {
"node": "0.8.x",
"npm": ">=1.1.2"
}
然后运行 npm shrinkwrap
命令,再运行 git add npm-shrinkwrap.json
命令。最后像平常一样提交代码。
shrinkwrap
仅在npm 1.1.2中添加。node_modules
解决了我的问题,直到Heroku升级他们的npm。
"engines": {"npm": ">=1.1.2"}
,Heroku 的 npm 将会尊重npm-shrinkwrap.json
文件(如果存在的话)。 - Colonel Panic