npmパッケージのバージョン管理について相談させてください。
とあるウェブサービスを、npmパッケージを使用して開発するとします。
プロジェクトにはエンジニアA/Bの2名がアサインされており、Aがこのプロジェクトのテクニカルディレクターとします。
プロジェクト開始時に必要なnpmパッケージX(v2.0.0)をインストール後、2名で開発を進めて行きます。
package.json に記載されるXのバージョン
^2.0.0
package-lock.json に記載されるXのバージョン2.0.0
開発開始から1ヶ月立ったある日、プロジェクト開始時に入れたパッケージXが2.1.0
へバージョンアップしたので、エンジニアAはそのパッケージをバージョンアップしたいと考えました。
エンジニアAはpackage.jsonにあるパッケージXのバージョンを^2.1.0
に書き換え、npm install
を実行し、コミットしました。
package.json に記載されるバージョン
^2.1.0
package-lock.json に記載されるバージョン2.1.0
エンジニアBは、上記2ファイルをどこかのタイミングでpullしますが、エンジニアBのローカルのnode_modulesにあるパッケージXはバージョンが2.0.0
のままであると思います。
質問
この例において、package-lock.jsonに記載されているバージョンとローカルのnode_modulesにインストールされているバージョンが違うことを機械的にエンジニアBにアナウンス、およびアップデートさせる良い手段はありますでしょうか。
一応考えてみたがしっくりこない解決策
1. 開発スタートコマンド(例えば:npm start
)時に、必ずnpm install
するようにnpm-scriptsを組む
→これは少々荒業な気がしています。
2. git-hookのpost-mergeでpackage-lock.jsonの更新を検知したらnpm install
https://davidwalsh.name/git-hook-npm-install-package-json-modified
ここに紹介されている方法です。今のところベストアンサーです。
前提
- コードのバージョン管理にはgitを使用
- npmバージョンはv5+
- node_modulesディレクトリは
.gitignore
に追加されている
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/21 14:38