引用サイト
以下サイトから引用させていただいております。
https://www.engilaboo.com/about-composer/
Composerとは?
PHPを用いたアプリ開発に必要なライブラリやパッケージをまとめて管理・インストールすることができる。
Composer(パッケージ管理ツール)を使わない場合、必要なパッケージを全て手作業で一つずつインストールする必要がある。
一方でComposerを使うことでコマンド一発で必要なパッケージをすべてインストールすることができます。
メリット
・パッケージのインストールが楽にできる
・チーム開発でパッケージやパッケージのバージョンを統一できる
・パッケージの依存関係を考えなくていい
composer.jsonとcomposer.lockの役割・違いについて
Composerの概要を掴んだところで、composer.jsonおよびcomposer.lockについて解説。
Composerがライブラリやパッケージを管理しているファイルがcomposer.jsonやcomposer.lockです。
どちらも「アプリ開発に必要なライブラリを管理している」という点では同じですが、若干役割が違います。
まず最初に使われるのはcomposer.jsonです。
Composerをインストールし、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.lockファイルをGit管理してチーム間で共有すればcomposer.lockを手元に落としてきてcomposer installをするだけで、チームでバージョン等を統一した状態で必要なパッケージをアプリにインストールすることができます。