環境で使い分けるcomposerコマンド
はじめに
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