「composer install」と「composer update」、「composer.json」と「composer.lock」の違い

CakePHPではcomposer使いますよね。

初心者で何かよくわからず使っている方、多いんじゃないかと思ってます。

「composer install」と「composer update」の違いがよくわからない…とかあるあるです。

なんかこの違いを間違えただけでシステムが動かなくなる…とか聞いたことあって、勝手に怯えてました。

なのでcomposerは大事です。

【自分の環境】
macOS Catalina
PHP7.4.2
CakePHP3.8
MAMP5.7
Apache2.2
MySQL5.7

「composer install」と「composer update」の違いをざっくり

ざっくりですが、以下の違いです。

「composer install」をする

「composer.json」は無視され、「composer.lock」の内容を元にライブラリがインストールされます。

この時「composer.lock」はもちろん内容を参照されますが、更新はされません。

「composer update」をする

「composer.json」の内容を元にライブラリがインストールまたはアップデートされます。

またその結果で「composer.lock」の内容が更新されます。

「composer install」と「composer update」の使いどころの違い

composer installは0から環境を作りたいときだと思います。

他人の環境を持ってきたい、別のプロジェクトでも読み込ませたい…などでしょうか。

composer updateはライブラリを追加したいときだと思います。

何かを作っている途中に使われますね。

ここで疑問、「composer.json」と「composer.lock」の違いは?

そういう疑問が生まれると思います。

違いをざっくりですが、以下にまとめました。

json
・自分で記述して作成
・1回目のcomposer installをするとlockを生成
・composer updateでこの内容を元にライブラリをインストールやアップデート

◎lock
・1回目のcomposer installで自動作成
・composer installでこの内容を元にインストール
・composer updateでこの内容が更新

「composer.json」と「composer.lock」の違いの要点

jsonは手動で作る、lockは自動で作られる

jsonを元にlockを作成、lockはjsonを元に作られる

③「composer update」ではjsonを元に動き、lockは更新されるだけ

こんなかんじでしょうか。

終わりに

以上となります。

かなりざっくりなのですが、要点をまとめてみました。

自分も実践の機会が少なく、まだわかっていません。

間違いがあればコメントで指摘していただきたいです。

これが勉強のきっかけになれば嬉しいです。

ありがとうございました。