PHPのcomposerはパッケージを管理するコマンドツールです。
composerには開発環境でしか使わないパッケージはインストールを分けることで、本番環境構築では除外できるようになっています。
今回は、開発環境用のパッケージの扱い方、開発環境用、本番用の展開の仕方を学びます。
require --dev - 開発環境用にパッケージ追加・アップデート
開発環境でしか使わないパッケージ専用のrequireコマンドです。
ここではサンプルとして、本番・開発環境にロガーのMonolog、開発環境でしか使わないものに、PHPコーディング規約チェックツールのPHP_CodeSnifferをインストールします。
通常の使い方が分からない人はこちらから。
コマンドを見ても分かるように、開発環境用では '--dev' オプションをつけます。
comoser.jsonの中身はこうなります。
開発環境用は'require-dev'という項目に追加されます。
'--dev' オプションはかつてrequire以外でも使われましたが、非推奨になりました。
くわしくは後述。
install - 開発用と本番用の環境を構築
今度は、さっき作ったPHPプロジェクトを別の場所で同じものを作りましょう。
composer.json, composer.lockの2つのファイルを別のディレクトリへコピーしてコマンドを実行します。
ここで気になるメッセージが出ています。'--dev' オプションは非推奨で次期composerのバージョンでは無意味になるか壊れるらしい。
壊れるという言葉がけっこうキツい。
(このコマンドはver.2.1.8で実行している。)
開発環境も含めたフルインストールはオプション無しで実行します。
MonologもPHP_CodeSnifferもインストールされました。
一方、開発環境用のパッケージを除いて本番環境にインストールするときにオプションを付けます。'--no-dev' を使います。
Monologはインストールされましたが、PHP_CodeSnifferはインストールされません。
'--dev' オプションは使えない。
通常インストールのコマンドでは、開発用も含めたフルインストール。
本番用の方にオプション(--no-dev)を付ける。
オプションなしのインストールが本番用と勘違いしやすいので注意が必要。
update - composer.jsonのみで開発用と本番用の環境構築
updateコマンドとinstallコマンドのちがいは、composer.lockファイルを使うかどうかです。機能としては一括インストールに変わりはない。
updateコマンドは、composer.jsonファイル1つから環境を構築します。
これもinstallコマンドと同じで、'--dev'コマンドは非推奨です。使うのはやめましょう。
開発環境も含めたフルインストールはオプションなしで実行します。
本番用はinstallコマンドと同じで、'--no-dev' オプションをつけます。
'--dev' オプションが使えるのはrequireコマンドだけ。
install, updateコマンドのオプション無しは開発用も含めたフルインストール。
本番用にオプション(--no-dev)を付ける。
通常のinstall, updateコマンドを使うと環境用になることに注意。
show - インストールされたパッケージの表示
showコマンドで本番用と開発用を分けて表示できます。
オプションの使い方はinstall, updateコマンドと同じ。
showコマンドは、--devオプションは使えません。エラーになります。
--devオプションがコマンドによって使えたり使えなかったりするのがややこしいから、require専用にしたんじゃないかな?