PHP 技術ログ

【composer】composer.jsonとcomposer.lockの違い

2023年1月4日

composerを使用してphpのパッケージ・ライブラリを管理している場合、次の2つのファイルに遭遇する機会があります。

  • composer.json
  • composer.lock

この2つのファイルはどのような違いがあるのか説明します。

そもそもcomposerとは?

composerは、PHPのパッケージ・ライブラリ管理ツールです。

composerの設定ファイルを使用すれば、composerのコマンド1つで必要なパッケージ・ライブラリをインストールすることが可能になります。

これにより、composerの設定ファイルを開発メンバーで共有することで、共通のパッケージ・ライブラリを共通のバージョンで統一することができます。

2つのファイルの役割

それでは、composer.jsoncomposer.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コマンドを実行する。

  • この記事を書いた人
  • 最新記事

Maita Tomoya / yone

2020.4~Webアプリケーションエンジニアとして都内の企業で働き、空いている時間でブログを運営している29歳男です。本ブログは情報の整理をするため、文章を書く機会を作るために始めました。1記事でも多く「誰かのためになる記事」を書けるように頑張ります!転職前は地方の高校で働いていました。教育関係の記事も定期的に書いていきたいと思います。

-PHP, 技術ログ