WEB/システム/IT技術ブログ

composerを利用したプロジェクト運用方法(installとupdateの違い)

update : 2020/05/03

最近、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」を利用してインストールを実行することで、別の開発者や環境で同じライブラリ環境を実現することができます。

プロジェクトアップデート

プロジェクトのライブラリを追加、または最新版にアップデートしたい場合、必要に応じて「composer.json」を編集して以下のコマンドを実行します。

composer update

そうすると「composer.json」の内容を元にライブラリがインストールまたはアップデートされ、その結果で「composer.lock」の内容が更新されます。

プロジェクト運用方法

これらを踏まえ、プロジェクト運用の流れを解説します。

まず、新しいライブラリをインストール、または、ライブラリをアップデートする場合、必要に応じて「composer.json」を編集してアップデートを実行します。

composer update

プロジェクトでテストなどを実施し、アップデートされたライブラリが問題ないことを確認できたら、更新された「composer.lock」をgitなどにコミットし、プロジェクト全体に共有します。

他のプログラマが更新された「composer.lock」を元に、以下のようにインストールを実行することで最新の環境にアップデートします。

composer install

また、「composer.lock」をステージング環境や本番環境にアップロードしてインストールを実行することで、最新の環境を反映します。

composer install
B!

Comment

Comment Form

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Monthly Archives