composer まとめ

2020/03/23

composer とはプロジェクトが必要とするライブラリやパッケージを管理し、それをもとにインストールする機能です。

端的にいうと、PHP の依存管理ツールですね。Linux でいう YUM や APT みたいなものです。

今回は composer についてまとめてみました。

 
INDEX

 

Composer自体のインストール

Linuxの場合

下記のページがわかりやすかったです。

Qiita - CentOS7にComposerをインストールする

 

Windowsの場合

以前、このサイトでエントリーしました。

 

パッケージをインストールする流れ

1.composer requireコマンド(ローカル環境)

composerのパッケージを追加で入れる場合、composer.json に追記して composer update でもいいのですが、そうすると関係無いライブラリの更新までします。

その場合は composer.json は触らず composer require でやるとcomposer側がよしなにやってくれます。


# パッケージを追加
$ composer require [vendor/package]
# 実例
$ composer require goodby/csv
# バージョン指定してパッケージを追加
$ composer require goodby/csv:1.2.0
# さくらレンタルサーバーの場合
$ php composer.phar require goodby/csv:1.2.0

# 削除
$ composer remove [vendor/package]

# 「開発」で必要なものを追加
$ composer require --dev [vendor/package]

# 「開発」で必要なものを削除
$ composr remove --dev [vendor/package]

 

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コマンド

installコマンド

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

ポイント1

composer.lock がある場合 composer.lock からそのままパッケージをインストールします。
composer.lock がない場合は composer.json から依存関係を解決してインストールします。

ポイント2
require と require-dev のちがい
種類 目的
require 本番環境と開発環境で共に利用
require-dev 開発環境のみ利用

composer.json の require-dev に記述して動作確認を行い、問題なければ本番環境にてcomposer install --devしてrequire-devパッケージを入れてしまう方法もあります。

updateコマンド


# composer.json に記載されているパッケージや依存をすべて最新にしたいとき
$ composer update

# composer.json に記載された特定のパッケージとその依存のみを最新にしたいとき
$ composer update [vendor]/[package]

# 開発用
$ composer update --dev

# 本番環境用
$ composer update --no-dev

ポイント

依存関係をアップデートするときに引数なしで composer update するのはやめたほうがいいです。

requireコマンド


# composer.json にパッケージを追加したい
$ composer require [vendor]/[package]

# composer.json に指定したバージョンのパッケージを追加したい
$ composer require [vendor]/[package]:2.1

# composer.json に指定したメジャー・バージョンの最新パッケージを追加したい
$ composer require [vendor]/[package]:2.*

# 開発用の方にパッケージを追加
$ composer require --dev [vendor]/[package]

removeコマンド

インストール済みのパッケージを削除したい場合


$ composer remove [vendor]/[package]

create-projectコマンド(laravelインストール)

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でダウンロードする。このコマンドのほうが高速にソースをダウンロードできるので、このオプションはよく使われる。

dump-autoloadコマンド

名前空間を新たに記述したときはコマンドを叩いて autoload_classmap.php を更新します。
あと、マイグレーションコマンドが効かなくなったときとか、このコマンドを実行すると直ったりします。


$ composer dump-autoload

self-updateコマンド

composer 自体を最新にアップデートします。


$ composer self-update

チェックグローバルインストールしている場合はroot権限で実行します。
$ sudo composer self-update

 
composer のまとめについては以上です。

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-周辺知識

おすすめ記事

動画で学習するなら ドットインストール、Schoo、Udemyのどれがいい?

独学に限界を感じたら Laravelが学べる!おススメのプログラミングスクール

フリーランスを目指すなら フリーランスエージェントTOP3