我有一个已注册npm-shrinkwrap.json
的Node.js应用。当我在本地运行npm install
时,它会安装npm-shrinkwrap.json
中指定的版本,但是当我将其推送到Heroku时(在它似乎忽略了收缩包装,只是安装了最新的版本。
我做错了吗?我无需办理登机手续node_modules
,是吗?
答案 0 :(得分:5)
正如你在答案中所说,当Heroku编写Nodejs buildpack时,功能npm shrinkwrap
不存在。
但是,从版本1.1.2开始,npm install
首先尝试npm-shrinkwrap.json
,然后再回到package.json
。这意味着Heroku尊重它(即使Heroku编写代码时没有构思该功能)。艾萨克斯很棒。
所以只需添加到package.json
:
"engines": {
"node": "0.8.x",
"npm": ">=1.1.2"
}
然后运行npm shrinkwrap
和git add npm-shrinkwrap.json
。然后正常提交。
答案 1 :(得分:2)
事实证明,Heroku现在使用npm 1.0.106,但根据changelog,shrinkwrap
仅在npm 1.1.2中添加。
添加node_modules
解决了我的问题,直到Heroku升级他们的npm。