最近、laravelやCakePHPなどcomposerを利用したPHPプロジェクトが増えてきました。
そこで、「composer.json」と「composer.lock」の違い、installやupdateの違いなど、運用方法についてのメモです。
間違っていたらご指摘ください。。
新規プロジェクト作成
新規でプロジェクトを作成する場合、ファイル「composer.json」を作成して必要なライブラリとバージョン情報を記述します。(今回「composer.json」の記述方法については割愛します)
以下のコマンドを実行すると、jsonファイルの情報を元にライブラリをインストールします。
composer install
この時、新規インストールになるのでファイル「composer.lock」が生成されます。「composer.lock」にはインストールされたライブラリ情報が出力されます。
両者の違いについて「composer.json」にはバージョンの範囲を指定することができます。指定範囲の中で最新のバージョンがインストールされます。
一方で「composer.lock」には、その時にインストールしたバージョンが出力されます。
プロジェクトインストール
例えば、先ほど作成したプロジェクトと同一のライブラリ環境を用意したい場合、先ほど生成された「composer.lock」をインストールディレクトリにコピーして、以下のコマンドを実行します。
composer install
この時「composer.json」は無視され、「composer.lock」の内容を元にライブラリがインストールされます。「composer.lock」は更新されません。
つまり「composer.lock」を利用してインストールを実行することで、別の開発者や環境で同じライブラリ環境を実現することができます。