composerを使用してphpのパッケージ・ライブラリを管理している場合、次の2つのファイルに遭遇する機会があります。
- composer.json
- composer.lock
この2つのファイルはどのような違いがあるのか説明します。
そもそもcomposerとは?
composerは、PHPのパッケージ・ライブラリ管理ツールです。
composerの設定ファイルを使用すれば、composerのコマンド1つで必要なパッケージ・ライブラリをインストールすることが可能になります。
これにより、composerの設定ファイルを開発メンバーで共有することで、共通のパッケージ・ライブラリを共通のバージョンで統一することができます。
2つのファイルの役割
それでは、composer.json
とcomposer.lock
の違いについて説明します。
composer install コマンドについて
事前準備として、composer install
コマンドについて説明します。
composer install
コマンド:- composer.lock、またはcomposer.json に書かれているパッケージやライブラリをvenderディレクトリにインストールする。
- composer.lockが存在すればcomposer.lockを読み込み、composer.lockがなければcomposer.jsonを読み込む。
- composer.lockがない場合は、インストールしたパッケージを管理するcomposer.lockを作成する。
composer.json
- インストールするパッケージやライブラリを管理するファイル
- プロジェクトのルートディレクトリに作成する
- チーム開発を開始するとき、共有するcomposer.lockを作成する際に作成・編集する
composer.lock
- インストールしたパッケージやライブラリを管理するファイル
composer install
コマンドを実行したときに、プロジェクトのルートディレクトリに自動生成される- composer.lockには、composer.jsonより詳細な情報が記載されている
- チーム開発の時は、composer.lockを共有する
使い分け
composer.jsonとcomposer.lockは、次のように使い分けます。
- composer.json
- 開発メンバーに共有するcomposer.lockを作成するとき。
- composer.lockが生成前であれば作成・編集する。
- パッケージ・ライブラリ情報を更新したり、追加したい場合はcomposer.jsonを編集する。
- 更新したり、追加する場合は、
update
コマンドやrequire
コマンド、remove
コマンドを使用する。
- composer.lock
- 開発メンバーでパッケージ・ライブラリの状況を統一させるときに使用。
- composer.lockを共有して、各々
composer install
コマンドを実行する。