環境で使い分けるcomposerコマンド

2021/05/08に公開

はじめに

Composerにはさまざまなコマンドが用意されている。
その中で今回は開発時によく使うコマンド(require, update, install)の使い分けについてまとめてた。

先にまとめ

  • composer require, composer updateは、開発環境で使用
  • composer installは、本番環境で使用

composerとは

公式ドキュメントから引用。

Composer is a tool for dependency management in PHP. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you.

PHPのプロジェクトで使用する様々なライブラリ、パッケージを良きに管理してくれるツール。
ドキュメントでもよく出てくるdependencyは日本語だと依存関係
依存関係は、例えばAというライブラリを動かすのに、Bというパッケージが必要といったことを指す。

composerのコマンド

全て公式ドキュメントから引用。

composer require

The require command adds new packages to the composer.json file from the current directory. If no file exists one will be created on the fly.

新しいパッケージをインストールしてcomposer.jsonに追加する。
composer.jsonがない場合、新しく作る。

composer update

In order to get the latest versions of the dependencies and to update the composer.lock file, you should use the update command. This command is also aliased as upgrade as it does the same as upgrade does if you are thinking of apt-get or similar package managers.
This will resolve all dependencies of the project and write the exact versions into composer.lock.

依存しているパッケージを最新版にアップデートする。
composer.lockを更新する。

composer install

The install command reads the composer.json file from the current directory, resolves the dependencies, and installs them into vendor.
If there is a composer.lock file in the current directory, it will use the exact versions from there instead of resolving them. This ensures that everyone using the library will get the same versions of the dependencies.
If there is no composer.lock file, Composer will create one after dependency resolution.

composer.jsonをもとに、依存関係を解決してパッケージをインストールする。
composer.lockがある場合、記載のバージョンをインストールする。
composer.lockがない場合、作成する。

環境で使い分ける理由

前提

  • composer.jsonにはインストールしたパッケージが何か書かれているがバージョンが書かれていない。
  • composer.lockには実際にインストールしたパッケージのバージョンが書かれている。

理由

  • 開発環境で必要なライブラリやパッケージをインストールして開発を行ったのち、本番環境に反映する際、composer install, composer updateを使うと、開発環境と違うバージョンのパッケージがインストールされ正常に動作しない可能性がある。
  • composer installであれば、compsoer.lockをもとに指定のバージョン(開発環境で動作確認済)のパッケージをインストール出来るため、開発環境と本番環境で同じ環境を構築できる。

Discussion