composerでLaravelにパッケージを追加する
こんにちは。Nonです。
今回は前に投稿した記事、
でTelescopeを導入したときに少しハマった内容をシェアしたいと思います。
初めに
composerでパッケージをインストールするときに一番始めに知ることといえば、
composer require アカウント名/パッケージ名 --dev
ですね。
上記コマンドを叩くと、
"require-dev": {
"hoge": "hoge"
}
上記のようにcomposer.jsonの"require-dev"
にパッケージが追加された状態になります。
もちろんcomposer.json
を直接編集する場合もあるでしょう、
要はcomposer.json
が
"require": {
"foo": "foo"
},
"require-dev": {
"hoge": "hoge"
}
となっていることが重要です。
またこのとき、
"require"
が必須パッケージ。"require-dev"
が開発環境用のパッケージとなっていることにも注目です。
当初僕は、"require"
と"require-dev"
が別の区切りを持つものと勘違いしておりました。
正しくは"require-dev"
が"require"
を包含するイメージですね。初めて触る人でこのような勘違いは割とあるのでは無いでしょうか。
インストール
"require-dev"
が開発環境用のパッケージ郡なので、開発環境のみ必要で、本番環境にはいりません。"require"
はプログラムを動作させるのに必須のパッケージ郡です。これは必須のパッケージ群なので本番環境と開発環境両方に必要ですね。
ここで開発環境に"require-dev"
を含む"require"
をインストールする方法と、本番環境に"require"
のみをインストールするコマンドがあります。
開発環境
開発環境のときはこのコマンドを実行します。
composer install --dev
composer.json
"require": {
"foo": "foo"
},
"require-dev": {
"hoge": "hoge"
}
上記のようにcomposer.json
に登録されているものがインストールされます。
本番環境
本番環境のときはこのコマンドを実行します。
composer install --no-dev
composer.json
"require": {
"foo": "foo"
}
上記のようにcomposer.json
に登録されているものがインストールされます。
アップデート
composer update
もinstall
と同じ様に--no-dev
と--dev
が存在します。
composer.json
を更新したときに実行するコマンドです。
ユースケース
開発環境に初めてインストールする時
composer install
composer.lock
にかかれている内容がインストールされます。
開発環境に新しいパッケージを追加する時
composer require アカウント名/パッケージ名
composer.json
に新しくパッケージが追加され、composer.lock
が更新されます。
開発環境のパッケージを最新版にしたい時
composer update
パッケージの依存関係を解決し、composer.json
とcomposer.lock
を更新します。
本番環境に反映する時
composer install
composer.lock
にかかれている内容がインストールされます。
また、基本的に
composer update
は本番環境では実行しない方が良いでしょう。
開発環境で実行し、問題が無いことをテストをしてから本番環境にアップロードし、
composer install
しましょう。つまり本番環境は
composer install
のみを実行するのが無難です。
最後に
今回はcomposerについて纏めてみました。
どちらかといえばハマった自分への備忘録として書いたので、皆さんはすでに知っていることばかりだったかも知れません。
Telescopeを導入するときに、本番環境でcomposer update
をしてしまったせいで、大変な目に合いました。
Telescopeをレンタルサーバーに導入しようとすると、PHPモジュールが足りないせいでエラーが発生し、サーバーエラーで環境がぶっ壊れます。
うーんこれは、一応今度記事にするかも知れません。
(レンタルサーバーでアプリ開発している人はいないだろうから、しないかも知れませんが、、、)
その時はよしなに。
.