Heroku不遵循npm-shrinkwrap.json文件。

3

我有一个Node.js应用程序,其中包含npm-shrinkwrap.json。当我本地运行npm install时,它会安装npm-shrinkwrap.json中指定的版本,但是当我将其推送到Heroku(Cedar堆栈上)时,似乎忽略了Shrinkwrap并仅安装最新版本。

我做错了什么吗?我不需要检查node_modules,对吗?

2个回答

5

正如你在回答中所说,当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 命令。最后像平常一样提交代码。


2
事实证明,Heroku目前使用的是npm 1.0.106,但据变更记录显示,shrinkwrap仅在npm 1.1.2中添加。
添加node_modules解决了我的问题,直到Heroku升级他们的npm。

1
如果您根据 https://devcenter.heroku.com/articles/nodejs-versions 指定了 "engines": {"npm": ">=1.1.2"},Heroku 的 npm 将会尊重 npm-shrinkwrap.json 文件(如果存在的话)。 - Colonel Panic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接