3

npm-shrinkwrap.jsonチェックインした Node.js アプリがあります。npm installローカルで実行すると、で指定されたバージョンがインストールされますがnpm-shrinkwrap.json、Heroku (Cedar スタック上) にプッシュすると、シュリンクラップが無視され、単に最新バージョンがインストールされるようです。

私は何か間違ったことをしていますか?チェックインする必要はありませnode_modulesんよね?

4

2 に答える 2

5

あなたの答えで言うように、Heroku が Nodejs ビルドパックを作成したとき、この機能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ます。次に、通常どおりコミットします。

于 2012-12-12T12:33:38.117 に答える
2

結局のところ、Heroku は現時点で npm 1.0.106 を使用していますが、 changelogshrinkwrapによると、npm 1.1.2 でのみ追加されました。

Herokuがnpmをアップグレードするまで、追加するnode_modulesと問題が解決しました。

于 2012-06-27T12:33:57.020 に答える