LoginSignup
0
1

More than 1 year has passed since last update.

composer のコマンドを勉強してみた

Last updated at Posted at 2021-07-26

composer は Laravel インストールする時に使った事はあるけれど、特に意識することなく(何も考えずに)使ってました・・・
そんな中、Laravel の carbon パッケージを調べる事があり、ふと「このcarbonってバージョンいくつなんだろう」と疑問に思った事が composer のコマンド使ってみたきっかけです。
備忘録的な意味合いが強いのですが、誰か、何かの役に立てばうれしいです。

パッケージの一覧を表示する

composer show -i
You are using the deprecated option "installed". Only installed packages are shown by default now. The --all option can be used to show all packages.
~~~ 略 ~~~
monolog/monolog                           2.2.0     Sends your logs to files, sockets, inboxes, databases and various web services
nesbot/carbon                             2.46.0    An API extension for DateTime that supports 281 different languages.
~~~ 略 ~~~

いろいろと出力されました。carbon のバージョンは 2.46.0 のようです。

composer update と composer install

よくcomposer update本番環境では実行しない事!なんてことを聞きますが何でですかね?あまり知らなかったのですが、今回調べた事を記します。

まずはcomposer updatecomposer installの対比表

実行コマンド 対 composer.json 対 composer.lock
composer install 参照のみ 参照のみ
composer update 参照のみ 書き込みあり

 
 
composer install の動き
1. composer.lock が存在すればファイル内に記されたパッケージのバージョン情報を取得する
2. composer.json ファイル内に記載されたパッケージをcomposer.lockに記されたバージョン情報に従ってパッケージのダウンロード・インストールを行う
composer.lockcomposer.jsonは読み込みのみ
 
 

composer update の動き
1. composer.json ファイル内に記載されたパッケージとバージョン情報に従ってダウンロード・インストールを行う
2. インストールしたパッケージ情報でcomposer.lock を更新する
composer.lockは書き込み
 
 
composer.lockはチーム内などで共有し、必要のないパッケージのバージョンアップを行わない為に使用されます。これを使用する事で意図しないバージョンアップによる不具合、コンフリクトを防ぎます。
そのcomposer.lockcomposer updateでは更新します
なので、通常の流れでは

  1. 開発環境でcomposer updateを実行
  2. composer.lock composer.jsonファイルを共有
  3. 本番環境で共有したcomposer.lockを使用してcomposer installを実行

という事になるのかな??

実際に本番環境でcomposer updateを行って、意図しないバージョンまでアップデートされ、その結果、稼働してたシステムが動かなくなったというケースを見たことがあります。
 
 
 
とりあえずこんなところで
勉強中なので必要があれば、追記、修正していきます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1