Composerを使うときにcomposer.lockファイルって出てくるけど、これってどんなファイルなの?
composer.jsonとどう違うの?
今回はこのような疑問にお答えするため、
Composerを使用するときに登場する
composer.lockファイルとcomposer.jsonファイルの違い
を解説します。
composer.lock
ファイルとcomposer.json
ファイルの違いcomposer.lock
ファイルとcomposer.json
ファイルの役割- 後からパッケージを追加したり更新(修正)したりする方法
Composerとは?
Composerとは、PHPのパッケージライブラリを管理するためのツールです。
パッケージライブラリは、簡単に言うと便利な機能(関数やクラスなど)がすでに実装されている機能のまとまりのことです。
例えば、Goutteというパッケージライブラリを使用すると、スクレイピング(Web上から情報を自動収集する技術)を比較的簡単に実装することが可能です。
Composerの基本的な使用方法
この記事での詳しい解説は割愛させていただきますが、Composerを使用するときの大まかな流れは以下の通りです。
composer.json
ファイルを新規作成するcomposer.json
ファイルにインストールしたいパッケージ名:バージョンを記載する- ターミナルで
composer install
コマンドを実行する - パッケージがインストールされる&
composer.lock
ファイルが生成される
上記の流れにあるとおり
Composerを使用する中で、composer.lock
ファイルとcomposer.json
ファイルの2つが登場します。
この記事で解説するのが、
「この2つのファイルはそれぞれどのような役割を持つのか?」
「何が違うのか?」
という点です。
composer.jsonとcomposer.lockの違い
それでは、この記事の本題である
composer.jsonとcomposer.lockの違い
について解説をしていきます。
この2つのファイルの違いを理解するためには、それぞれのファイルの役割を知ることが大切です!
composer.jsonの役割
プロジェクト立ち上げ時に、インストールしたいパッケージをComposerへ伝えることがcomposer.jsonの役割です。
composer.jsonにインストールしたいパッケージ情報を記述しておき、composer install
コマンドを実行することで、記述したパッケージや依存関係にあるパッケージが自動的にインストールされます。
composer.lockの役割
チーム開発のとき、チームメンバーが効率的に同じパッケージをインストールできるようにすることがcomposer.lock
ファイルの役割です。
前述したとおり、初めてcomposer install
コマンドを実行すると、Composerはcomposer.json
ファイルを参照し、そこに記述されているパッケージとその依存パッケージをインストールします。
それと同時に、「どんなパッケージをインストールしたのか」という情報がcomposer.lock
ファイルに記録されます。
そして、ここが重要なポイントですが、
composer.lock
ファイルがある状態でcomposer install
コマンドを実行すると、Composerは.jsonではなく、.lockを参照してパッケージをインストールします。
つまり、チームメンバー間で同じcomposer.lock
ファイルを共有してcomposer install
コマンドを実行すれば、全員が簡単に同じパッケージをインストールできるということです。
以上が、composer.jsonとcomposer.lockファイルの違いです。
パッケージを更新(修正)・追加する方法
前述のとおり、
composer.lock
ファイルがあるときは、composer install
コマンドを実行してもcomposer.json
ファイルに記述されている内容は参照されません。
つまり、あとから
パッケージの情報を変えたいな……
パッケージを追加したいな……
となったときにcomposer.json
ファイルを編集してcomposer install
コマンドを実行しても、パッケージに変更が加わらないということです。
パッケージを「更新(修正)」または「追加」したいときは、以下のようにまた違うコマンドを使用します。
- composer.jsonを編集する
composer update
またはcomposer update パッケージ名
コマンドを実行する
「composer update」と「composer update パッケージ名」の違い
composer update
…… composer.jsonに記述されている全パッケージに対して更新が実行されるcomposer update パッケージ名
…… composer.jsonに記述されている、指定したパッケージのみ更新が実行される
composer require パッケージ名
コマンドを実行する
パッケージのバージョンを指定したいとき
composer require パッケージ名:バージョン番号
コマンドを実行する
(例)composer require hoge/huge:3.1.0
Composerであとからパッケージを更新(修正)したり追加したりするときは、update
やrequire
コマンドを使うということを覚えておきましょう!
composer.lockファイルを上手く活用してチーム開発を効率化しよう
以上がcomposer.lockファイルとcomposer.jsonファイルの違いでした。
このように、2つのファイルの役割には明確な違いがあります。
特にcomposer.lock
ファイルは、チーム開発をする上で上手に活用できるとパッケージを安全かつ効率的にインストールできます。
いまはまだ個人でしか開発していないという方も、composer.lock
ファイルとcomposer.json
ファイルの違いをしっかり整理しておくことでComposerへの理解も深まるかと思います。
この記事が少しでもお役に立ったなら何よりです!
コメント