composerのrequire/update/installの違い。開発環境と本番環境へのデプロイで使うコマンド

PHP
この記事は約3分で読めます。
スポンサーリンク

この記事では、開発環境と本番サーバ環境を使ってPHPプロジェクトの開発をしている前提での、PHPのパッケージ管理ツール composer のコマンドrequire/update/installの使い分けについて整理しておきます。

スポンサーリンク

composerのrequire/update/installの違い

ウェブサイト開発を行っていて、パッケージを追加した後にデプロイするとき、本番環境にパッケージの導入も行う必要があります。

そのとき、composerのコマンドを間違えると、ローカル環境とバージョン違いのパッケージを導入してしまい、本番環境での振る舞いがローカル環境でテストしたときと違ってしまう可能性が出てきます。

そうならないために、3つのコマンドの違いを整理して覚えましょう。

composerの管理ファイル

 

composer.json

プロジェクトの依存関係を記述したファイル。導入したパッケージなどが記述されている。

composer.lock

実際にダウンロードされたパッケージの情報が記録されるファイル。バージョン名を記録されているため、ダウンロードされたパッケージをバックアップしておかなくても、パッケージの環境を再現することが出来る。

パッケージは通常、PHPプロジェクトの中のvendorディレクトリに保存されていますが、特にバックアップの必要はなく、composer.json、composer.lockのファイルだけバックアップやバージョン管理しておけば、環境を再構築することができます。

環境を再現するとき、composer.jsonだけでは使用するパッケージしかわからないため最新のバージョンを使ってしまいます。それでは、バージョンの不一致による挙動の違い、不具合の原因となります。composer.lockファイルまで含めることで、バージョンまで含めて同じ環境を再現することができます。

composerのコマンド

以下では、composer で普段使うコマンドの簡単な説明と、ローカル開発環境と公開サーバーの本番環境を使って開発している前提での使い所を紹介します。

composer require

パッケージを追加するときに使います。パッケージ名やバージョンを指定して追加することもできます。

このコマンドでは、composer.jsonに必要パッケージを記録します。

ローカル開発環境で行なうべきコマンドです。

composer update

composer.json に記録されているパッケージを最新バージョンにアップデートします。composer.lockファイルも更新されます。

こちらもローカル開発環境で行なうべきコマンドです。

composer install

composer.jsonに記録されているパッケージを、composer.lockに記録されているバージョンでインストールします。

ローカル環境でバックアップから環境を再現したいとき、本番環境にデプロイするときに使うコマンドです。

まとめ

composerの管理ファイルとコマンドの違いについて説明しました。

ローカル環境と本番環境を使って、ウェブサイトを開発している場合、

  • composer require, composer update は、ローカル環境で使用
  • composer install は、本番環境で使用

とおぼえておきましょう。

composerを導入しているプロジェクトで本番環境へデプロイするとき、composer update を使ってしまうと、ローカル開発環境とパッケージのバージョンが変わってしまう場合があるので注意してください。

 

メルマガでは、もと組み込みエンジニアで、独立してウェブプログラマとなった僕の経験をもとに、プログラミングテクニックなどを発信しています。

興味がありましたら、ぜひ、登録して見てください。

メルマガ登録フォーム

氏名*
メールアドレス*
確認用メール アドレス*

 

この記事が気に入ったら
いいね ! しよう

コメント