リビジョン管理のアプリケーションでnode_modulesフォルダをコミットしていません。私たちのビルドプロセスと開発者の指示には、必要なノードモジュールをインストールするための初期チェックアウト時に手動で「npm install」を実行することが含まれます。私たちのpackage.jsonファイルは、依存関係のバージョンを詳しく示します。NPM/Node/package.jsonによるリビジョン管理と依存関係解決
最近私の自動ビルドは壊れました。なぜなら、私が可能ではないと考えていたサードパーティのコミットが原因でダウンストリームの依存関係が壊れたからです。次のように私たちのpackage.jsonファイルは次のとおりです。
{
"name": "test-package",
"description": "Test Package",
"version": "1.0.0",
"license": "UNLICENSED",
"private": true,
"repository": { "type": "svn", "url": "" },
"dependencies": {
"extend": "3.0.0",
"windows-registry": "0.1.3"
}
}
具体的には、「ウィンドウ・レジストリ」バージョン「0.1.3」への依存が原因で、そのモジュールの子依存性(「参照」バージョン「1.2.0で破りました")。 「ウィンドウ・レジストリ」package.jsonファイルから依存関係は次のとおりです。
"dependencies": {
"debug": "^2.2.0",
"ffi": "^2.0.0",
"ref": "^1.2.0",
"ref-struct": "^1.0.2",
"ref-union": "^1.0.0"
}
私は、「ウィンドウ・レジストリ」を引き受けるには、必ず「REF」パッケージのバージョン「1.2.0」を参照しますが、それはでした実際にバージョン1.3.4を引っ張ってから最近1.3.5というビルドを壊しました。私はpackage.jsonファイルの "ref"がバージョン "1.2.0"でないことを確認しました。 "ref"のpackage.jsonファイルは巨大で、ファイル内のさまざまなキーの下に "[email protected]^1.2.0"のような値がたくさんあります。 package.jsonファイルの興味深い部分は以下のとおりです。
{
/* Lots of other stuff */
"_spec": "[email protected]^1.2.0",
"version": "1.3.4"
}
なぜNPMは、同じ一貫した再現性の依存関係グラフをロードしていませんか? node_modulesをリビジョンコントロールにコミットする必要がありますか?
私の中で、プログラマは、正規表現のようなcarretを読みたい、それが私には、より具体的に感じている - それは私がより良いドキュメントを読んでいないために何を得るのです。あなたの依存関係が一貫していることを保証する唯一の方法は、あなたのノードモジュールもコミットすることだと思いますか?それは大きく、コンパイルされたバイナリがbinフォルダに入っているなど、実際には臭いです。これには何か別の選択肢がありますか? – jriffel73