質問: 現在50人弱のエンジニアが参画しているプロジェクトでフロントエンドを担当していますが、以下のような状態で`npm install`を実行すると、`package-lock.json`に意図せぬ差分が発生し、運用で悩んでおります。 **1.プロジェクトディレクトリ直下に`node_modules`ディレクトが存在しない** * `package.json`、`package-lock.json`はmasterからpullしたものを使用 * `package-lock.json`更新による差分が生じる。 **2.プロジェクトディレクトリ直下に`package-lock.json`が存在しない** * `package.json`はmaserからpullしたものを使用し、`node_modules`は存在する状態 * 生成される`package-lock.json`とmasterの`package-lock.json`に差分が生じる 2番目のプロジェクトディレクトリ直下に`package-lock.json`が存在しない状態で差分が生じるのは、`npm install`実行のタイミングで依存ライブラリがアップデートされているからでは? と推測ができますが、1番目については理由がわかりません。 このような状況ですと、新メンバーが参画し`npm install`を実行するだけで`package-lock.json`に意図せぬ差分が生じ、merge conflict多発が予想されます。 ですので、エンジニア人数が10人以上の開発体制での`package-lock.json`運用について知見をお持ちの方がいらっしゃいましたら、どのような方法で運用されているか教えて頂けないでしょうか? また同様の現象でお悩みの方も、現時点での解決策で構いませんのでお伝え頂けると助かりする。 色々とネットで調べましたが、腑に落ちる解決策が提示されてるものはなかったので、こちらで質問させて頂きました。 なおNode.js、npmのバージョンは下記です。 * Node.js v8.4.0 * npm 6.4.1 何かしらの知見をお持ちの方のご返答お待ちしております。 よろしくお願い致します。
回答: `npm ci` は `package-lock.json` を参照して依存をインストールするので、`npm ci` でインストールすることを徹底することで防げると思います。 `package.json` に書いてある依存は semver 形式なので完全に固定バージョンで書いてない限り `npm install` ではアプデ発生します。