2022/04/25
composer とはプロジェクトが必要とするライブラリやパッケージを管理し、それをもとにインストールする機能です。
端的にいうと、PHP の依存管理ツールですね。Linux でいう YUM や APT みたいなものです。
今回は composer についてまとめてみました。
INDEX
Composer自体のインストール
Linuxの場合
下記のページがわかりやすかったです。
Qiita - CentOS7にComposerをインストールする
Windowsの場合
以前、このサイトでエントリーしました。
パッケージをインストールする流れ
手順1)composer requireコマンド(ローカル環境)
手順2)composer.lockを共有
手順3)composer installコマンド(本番環境)
手順1)composer requireコマンド(ローカル環境)
composerのパッケージを追加で入れる場合、composer.json に追記して composer update
でもいいのですが、そうすると関係無いライブラリの更新までします。
その場合は composer.json は触らず composer require
でやるとcomposer側がよしなにやってくれます。
### パッケージを追加
$ composer require "ベンダー名/パッケージ名"
# 実例
$ composer require "goodby/csv"
# バージョン指定してパッケージを追加
$ composer require goodby/csv:"1.2.0"
# さくらレンタルサーバーの場合
$ php composer.phar require "goodby/csv":"1.2.0"
# 削除
$ composer remove "goodby/csv"
# 「開発」で必要なものを追加
$ composer require --dev "goodby/csv"
# 「開発」で必要なものを削除
$ composr remove --dev "goodby/csv"
手順2)composer.lockを共有
ローカル環境で問題ないことが確認できたら、Gitで composer.lock を共有します。
composer.json (Composerの設定ファイル) |
インストールするパッケージ一覧。composer update コマンドは composer.json の設定に基づき最新のパッケージをインストールし、composer.lockファイルを更新します。 |
---|---|
composer.lock (Composerの設定ファイル) |
実際にインストールされたパッケージの具体的なバージョンなどの情報が自動的に記録されます。(※composer.jsonと同じ記述形式)composer install コマンドはcomposer.lockファイルが存在する場合、そこに記載されているパッケージのバージョンをインストールします。 |
vendor | インストールしたパッケージのソース本体 |
手順3)composer installコマンド(本番環境)
composer install
コマンドはcomposer.lockファイルが存在する場合、そこに記載されているパッケージのバージョンをインストールします。
ローカル環境で問題がないことが確認できたら、Gitでcomposer.lockファイルを本番環境にデプロイします。
そのあと、composer install
コマンドを実行。
こうすることで、ローカル環境と全く同じバージョンのパッケージを本番環境で使うことができます。
同様に、他の人はGitで composer.lock をプルし、ローカル環境下でcomposer install
コマンドを実行すると、全く同じバージョンのパッケージを入れることができます。
よく使うcomposerコマンド
# Composerのバージョン確認
$ composer -V
# Composerのアップデート方法
$ composer self-update
# Composerのロールバック方法
$ composer self-update --rollback
# Composerのバージョンを 1.x に固定したい
$ composer self-update --1
パッケージを(パッケージが依存しているパッケージを含めて)vendor/
以下に全てインストールします。
composer.json に記載されたパッケージや依存を現在のプロジェクトにインストールしたいときに使用します。
# 1.ローカル環境ではcomposer requireコマンドが無難
# 2.ローカル環境で問題なければ composre.json + composer.lock を本番サーバへデプロイ
# 3.SSH でサーバにアクセスして以下のコマンドを実行
$ composer install
# さくらレンタルサーバの場合
$ php ../composer.phar install
# require-dev(開発用のパッケージ)にインストール
$ composer install --dev
# require-dev(開発用のパッケージ)はインストールしない
# ただし config/app.php にサービスプロバイダの記述があるとエラーになる
$ composer install --no-dev
composer.lock
がある場合 composer.lock
からそのままパッケージをインストールします。composer.lock
がない場合は composer.json
から依存関係を解決してインストール + composer.lock
を新規作成します。
require と require-dev のちがい
種類 | 目的 |
---|---|
require | 本番環境と開発環境で共に利用 |
require-dev | 開発環境のみ利用 |
composer.json の require-dev に記述して動作確認を行い、問題なければ本番環境にてcomposer install --dev
してrequire-devパッケージを入れてしまう方法もあります。
パッケージを最新のバージョンに更新するコマンド。
# composer.json に記載されているパッケージや依存をすべて最新
$ composer update
# composer.json に記載された特定のパッケージとその依存のみを最新
$ composer update "ベンダー名/パッケージ名"
# 実例
$ composer update "laravelcollective/html"
# 開発用
$ composer update --dev
# 本番環境用
$ composer update --no-dev
update
の後に何も指定しないと、全てのパッケージが更新されてしまうので注意が必要!update
の後にパッケージを指定すると、指定したパッケージのみアップデートされる。
必要なパッケージを新たに composer.json
に追加し、vendor/
以下にインストールするコマンド。
# パッケージのインストール(書式)
$ composer require "ベンダー名/パッケージ名":"バージョン"
# 5.8 をインストールする場合
$ composer require "laravelcollective/html":"5.8"
# 6.0をインストールする場合
$ composer require "laravelcollective/html":"6.0"
# 正規表現を使ってバージョン指定することも
$ composer require "laravelcollective/html":"6.*"
# 開発用の方にパッケージを追加
$ composer require --dev ベンダー名/パッケージ名
composer.lock
ファイルも一緒に更新します。パッケージ名の後に、バージョンを指定してあげれば、指定バージョンをインストールできます。
インストール済みのパッケージを削除したい場合
$ composer remove [vendor]/[package]
Laravelをインストールするときに使うお馴染みのコマンドです。
// 書式
$ composer create-project laravel/laravel プロジェクト名 --prefer-dist "バージョン指定"
// 実例
$ composer create-project laravel/laravel my_project --prefer-dist "5.2.*"
- --prefer-source
- git cloneでソースを落とす。デフォルト(オプションの指定なし)ではこちらのコマンドが使われる。
- --prefer-dist
- zipでダウンロードする。このコマンドのほうが高速にソースをダウンロードできるので、このオプションはよく使われる。
名前空間を新たに記述したときはコマンドを叩いて autoload_classmap.php を更新します。
あと、マイグレーションコマンドが効かなくなったときとか、このコマンドを実行すると直ったりします。
databaseディレクトリ
以下は composer dump-autoload を先にやっておく必要があります。そのあとに、マイグレーションやシーダーを実行する流れになります。
$ composer dump-autoload
composer 自体を最新にアップデートします。
$ composer self-update
$ sudo composer self-update
composer のまとめについては以上です。
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。