チーム開発に途中から参加した場合、リモートから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 を見てくれるので固定値のバージョンをインストールしてくれるだけでなく、なんだかとても早くインストールが終わります。
composer updateやnpm installをすると…
ネーミング的に安全な気がしてうっかりcomposer updateやnpm installをしてしまいかねないですが、
これらのコマンドはcomposer.jsonやpackage.jsonファイルを見に行って

*(アスタリスク)で書かれている場合、可能なバージョンの中の一番新しいものを取得してしまいます。
その結果、lockファイルが書き換わってしまい、リモートとバージョンが違う!ということが起こってしまいます。