composer は、composer.json に宣言した依存パッケージを解決・インストール・更新し、vendor/ に配置するツールです。既定のリポジトリは Packagist(packagist.org)です。(getcomposer.org)
実務では「開発では install、ロック更新時は update、本番は --no-dev -o(最適化オートローダ)」といった運用が一般的です。(getcomposer.org)
構文(Syntax)
composer [GLOBAL_OPTIONS] <command> [ARGS]
# 代表的なコマンド
composer init
composer require VENDOR/PKG[:VERSION]
composer install [--no-dev] [-o|--optimize-autoloader]
composer update [PKG...] # 部分更新可
composer remove PKG...
composer dump-autoload [-o]
composer create-project PKG [DIR]
composer run [--] <script> [-- ARGS...] # scripts 実行
composer show [PKG] # 一覧/詳細
composer validate # composer.json 検証
主なグローバルオプション(どのコマンドでも使用可): -n/--no-interaction, -d/--working-dir DIR, -v/-vvv(冗長化), -q(静音), --no-scripts, --no-plugins, --profile など。(getcomposer.org)
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
-n, --no-interaction | 質問をせず既定値で進める(CI向け) | composer install -n (getcomposer.org) |
-d, --working-dir DIR | 作業ディレクトリを指定 | composer -d api install (getcomposer.org) |
--no-dev | require-dev を入れない(install/update) | composer install --no-dev (getcomposer.org) |
--dev | require-dev を入れる(既定) | composer update --dev (getcomposer.org) |
-o, --optimize-autoloader | オートローダをクラスマップ化して高速化 | composer install -o (getcomposer.org) |
| `–prefer-install=dist | source` | 取得方式の優先(配布物/ソース) |
--no-scripts | composer.json の scripts を実行しない | composer update --no-scripts (getcomposer.org) |
--no-plugins | プラグインを無効化 | composer install --no-plugins (getcomposer.org) |
--with-dependencies, --with-all-dependencies | 指定パッケージの依存も更新 | composer update -W vendor/* (getcomposer.org) |
--ignore-platform-reqs | PHP/拡張などのプラットフォーム要件を無視 | composer install --ignore-platform-reqs (getcomposer.org) |
実行例
プロジェクト初期化と依存追加
説明: 対話なしで最小の composer.json を作成し、monolog/monolog を追加します。
コマンド:
composer init -n
composer require monolog/monolog
composer show monolog/monolog | head -n 5
出力例(抜粋):
Using version ^3.0 for monolog/monolog
./composer.json has been updated
...
(require は依存を追加し composer.lock を更新します)(getcomposer.org)
本番向けインストール(dev除外+オートローダ最適化)
説明: 本番サーバで dev 依存を省き、オートローダを最適化します。
コマンド:
composer install --no-dev -o
(-o は特に本番で推奨)(getcomposer.org)
依存を一部だけ更新
説明: 特定パッケージのみ更新できます。ワイルドカードも可。
コマンド:
composer update vendor/package
composer update "vendor/*"
(update は依存解決を行い lock を書き換えます)(getcomposer.org)
テンプレートから新規作成
説明: スケルトン(テンプレート)からプロジェクトを作成します。
コマンド:
composer create-project laravel/laravel blog
(create-project の各種フラグは CLI ドキュメント参照)(getcomposer.org)
オートローダのみ再生成
説明: クラス追加後などに autoload 情報だけ更新します。
コマンド:
composer dump-autoload -o
(dump-autoload は依存の再取得は行わず、オートローダを生成します)(getcomposer.org)
エラー例:composer.json が無いディレクトリで install
説明: ルートに composer.json が無いと失敗します。
コマンド:
mkdir /tmp/empty && cd /tmp/empty
composer install
出力例(概略):
[Composer\Json\JsonValidationException]
Composer could not find a composer.json file in /tmp/empty
関連コマンド
php:vendor/autoload.phpを読み込んでライブラリを利用。pecl: PHP 拡張(C拡張)を配布する旧来の仕組み。Composer は PHPライブラリの依存管理に特化。composer self-update: Composer 本体(PHAR)の更新。(getcomposer.org)
備考
- install と update:
installは既存のcomposer.lockを厳密に再現、なければ作成。updateは依存を再解決してcomposer.lockを書き換えます。(getcomposer.org) - Packagist: 既定のリポジトリは Packagist。必要に応じて
composer.jsonのrepositoriesで私設レポジトリを追加できます。(getcomposer.org) - 本番最適化: 大規模アプリでは
-o(または--classmap-authoritative)でオートローダを最適化すると高速です(開発時は非推奨)。(getcomposer.org) - CI向け: 対話抑止は
-nまたはCOMPOSER_NO_INTERACTION=1を利用。(getcomposer.org) - root 実行時の注意: 近年の Composer は安全のため root 実行でプラグインを無効化/確認させる挙動があり得ます。可能なら一般ユーザーで実行してください。(GitHub)
- ユーザー設定:
COMPOSER_HOME/config.json(ユーザー設定)でconfigやrepositoriesを永続化できます。(getcomposer.org)
参考
- Composer 公式ドキュメント(CLI/コマンド一覧): https://getcomposer.org/doc/03-cli.md (getcomposer.org)
- 基本的な使い方(Packagist の説明あり): https://getcomposer.org/doc/01-basic-usage.md (getcomposer.org)
- リポジトリ(Packagist が既定である旨): https://getcomposer.org/doc/05-repositories.md (getcomposer.org)
- オートローダ最適化: https://getcomposer.org/doc/articles/autoloader-optimization.md (getcomposer.org)
- スクリプト(
composer runなど): https://getcomposer.org/doc/articles/scripts.md (getcomposer.org)

コメント