Composer installとupdateの違い
更新日 : 2019年12月25日
Composerを利用するとPHPのライブラリを自動的にインストールして、すぐに開発できる環境が整います。
Composerを利用していてよく利用するコマンドがinstall
やupdate
です。この2つのコマンドに関わるファイルとしてcomposer.json
とcomposer.lock
ファイルがあります。
今回はこの2つのコマンドの扱い方とファイルとの関係を解説していきます。
composer.jsonファイルとは
Composerを扱う上で必須のファイルです。このファイルにプロジェクト名・プロジェクトの説明・プロジェクト作成者・プロジェクトで利用するライブラリとそのバージョンの指定等様々な内容を記述していきます。
composer.lockファイルとは
composer.lock
ファイルは必須ファイルではありません。このファイルには各ライブラリのバージョン情報が記載されています。そのため、チームで開発しているメンバーがライブラリをインストールする際にはこのcomposer.lock
ファイルを元にライブラリのバージョン情報を確認してダウンロードを行います。
このファイルが存在することにより、どの開発メンバーでも同じバージョンのライブラリをインストールすることができます。
install
コマンドとupdate
コマンドの違い
composer install
コマンドとcomposer update
コマンドの違いは上記で説明したlock
ファイルとjson
ファイルの扱いに関係しています。
composer install
コマンドの動作
composer install
コマンドの動作は下記の順番で行われます。
composer.lock
ファイルを確認composer.lock
ファイルが存在すれば、ファイル内の各ライブラリのバージョン情報などを確認し、インストールするライブラリを決定composer.lock
ファイルが存在しない場合には、composer.json
ファイルを確認composer.json
ファイル内にあるインストールするべきライブラリをバージョン情報に従いダウンロード・インストールを行う
基本的にはこのような流れでライブラリのインストールが行われます。
composer update
コマンドの動作
update
コマンドを行うとcomposer.lock
ファイルは確認されません。文字通りライブラリのアップデートを行います。このときアップデートするバージョンはcomposer.json
ファイルにしたがって行われます。
そしてライブラリのインストールが終了するとインストールしたライブラリの情報をcomposer.lock
を更新して次にインストールする開発者のために利用されます。
composer.json
ファイルにもcomposer.lock
ファイルにもライブラリの情報とそのバージョン情報が記載されていますが、何が異なるのでしょうか。
composer.json
ファイルとcomposer.lock
ファイルのライブラリ情報
composer.json
ファイルにはバージョン情報が記載されていますが、アバウトなバージョン情報が記載されています。
例えばcomposer.json
でライブラリのバージョン情報を指定する際2.*
のように記載されたりします。
このように指定すると2.0.0
から3.0.0
未満(3.0.0を含まない)の間で最新バージョンがインストールされるようになります。これがcomposer.json
ファイルでアバウトにバージョン情報を記載するということです。
そもそもバージョン情報はx.y.z
のように表現され、x・y・zにはバージョンの数字が入ります。xにはメジャーバージョン・yにはマイナーバージョン・zにはパッチバージョンが記載されるのが基本です。
メジャーバージョンがアップデートされるとライブラリの仕様が変更されることがありますが、パッチバージョンのアップデートであればライブラリのバグ修正程度の修正に落ち着きます。
このようにバージョン情報には仕様が変わってしまうほどのバージョンアップとそれほど変わらないバージョンアップがあるので、ライブラリを利用する側としては仕様が変わらない程度でバージョンアップを行いたいことが多くあります。
そのようなときに上記のようにアバウトにバージョン情報を記載すればバグ修正のバージョンのみをアップデートすることができるようになり、プロジェクト本体への影響が少なくなります。
そしてcomposer.lock
ファイルが存在することにより、どの開発者でも全く同じバージョンをインストールすることができるようになります。
update
コマンドを利用するとcomposer.json
ファイルのバージョン情報に従い、指定されたバージョン情報で最新のバージョンがインストールされます。例えば、composer.json
で2.*
と記載されたライブラリで現状2.0.0
がインストールされていたとして、ライブラリが更新され2.1.5
と3.0.0
がリリースされた場合、update
コマンドを利用することで2.*
のバージョン指定に従い2.1.5
へアップデートされます。
まとめ
Composerのコマンド2種類(install & update
)とそれらコマンドに関わるファイル(composer.json
とcomposer.lock
)について解説しました。
これらの内容は公式コマンドラインインターフェースドキュメントに記載されている内容を元に作成したものです。その他細かいオプションについては現状は公式サイトをご覧ください。
タグ
-
前の記事
Composerの基本的な使い方