composer.lock や composer.json, package.json , package.json.lock

Tool

チーム開発に途中から参加した場合、リモートからcloneしてきたファイルには

composer.lock

composer.json

package.json

package-lock.json

などが含まれています。

なんだかかわからないけどとりあえずインストールすればいいんだよね〜とnpm installなんてしてしまうと、lockファイルがめっちゃ書き換わってる!!なんで?

ということになってしまいます。。

ということで自戒メモ。

npm… / composer…とは

あまり違いを理解していませんでしたが、

composerはphpのライブラリバージョン管理ツール

npmはjsのライブラリバージョン管理ツール

だそうです。

基本、lockファイルを install / ci する

composerの場合

開発に途中参加で、composerファイルに書かれているプラグインを一式インストールする場合、

composer install

をします。

このコマンドはcomposer.lockファイルに書いてある固定値のバージョンのプラグインをインストールしてくれるので、リモートと微妙にバージョンが違うよ?となることがありません。

package.jsonの場合

npm ci

を使います。

これはpackage-lock.json を見てくれるので固定値のバージョンをインストールしてくれるだけでなく、なんだかとても早くインストールが終わります。

npm ciについての参考記事

composer updateやnpm installをすると…

ネーミング的に安全な気がしてうっかりcomposer updateやnpm installをしてしまいかねないですが、

これらのコマンドはcomposer.jsonやpackage.jsonファイルを見に行って

*(アスタリスク)で書かれている場合、可能なバージョンの中の一番新しいものを取得してしまいます。

その結果、lockファイルが書き換わってしまい、リモートとバージョンが違う!ということが起こってしまいます。

タイトルとURLをコピーしました