composerとは
PHPのパッケージ・ライブラリ管理ツール
- パッケージのインストールが楽にできる
- パッケージの依存関係を考えなくてよくなる
- チーム開発でパッケージやパッケージのバージョンを統一できる
composer.jsonとcomposer.lockの役割
最初に使用されるのがcomposer.json
composer installをしたら、composer.jsonに書かれた情報を基にパッケージやライブラリがvendorディレクトリ配下にまとめてインストールされる。
このとき同時にcomposer.lockファイルが生成される。
composer install時に参照したパッケージやパッケージのバージョン情報がcomposer.lockに書き込まれる。
そして二回目以降 composer installをした際は、composer.jsonではなくcomposer.lock が参照される。
つまり、composer.lockがある場合は、composer installをしても、単にcomposer.lockを参照してライブラリをインストールするだけで、何かパッケージの情報(パッケージの追加とかバージョン情報とか)が書き換わることはない。
composer install
composer.lockがない場合
→ composer.jsonを元にライブラリをインストールし、composer.lockを生成
composer.lockがある場合
→ composer.lockを元にライブラリをインストール
composer update
composer.jsonにパッケージを追加する等の変更を加えて、composer updateをすると、composer.jsonの情報を基にライブラリが最新の状態に更新される。
そしてこのとき、最新にしたパッケージやライブラリの情報がcomposer.lockに書き込まれる(composer.lockが更新される)
これ以降は、先ほどまでと同様に、composer installをすると、composer.lockを基に最新のライブラリがアプリにインストールされる。
まとめ
-
composer.json
→ 使用するパッケージとバージョンの指定。手動で編集する。 -
composer.lock
→ 実際にインストールされたパッケージのバージョンを固定化する。自動生成。 -
composer install
→ composer.lock があればそれを参照してインストール。なければ .json を元に生成 -
composer update
→ .json の内容を元にパッケージを更新し、composer.lock を上書き