一度Composerを使ったけど使い方忘れてしまったという人向けに書いています
インストール
Linux
下記リンクを参考
Qiita - CentOS7にComposerをインストールする
Windows
公式サイトからインストーラーをダウンロードしてインストール。
途中で聞かれるPHP実行ファイルのパスはphp.exeのパスを指定。
(例)XAMPPだとC:\xampp\php\php.exe
Composer自体のアップデート
Linux
Windows
インストーラーでもう一度インスト―ルすればよい(自分の場合は上書きインストールで問題なかった)
使い方
一番最初
プロジェクトのルートディレクトリに「composer.json」ファイルを作成して下記のようにインストールしたいパッケージをJSON形式で書く。
{
"require": {
"zendframework/zend-cache": "2.*"
},
"require-dev": {
"phpunit/phpunit": "6.*",
"apigen/apigen": "*"
}
}
ターミナル(Windowsだとコマンドプロンプト)でプロジェクトのディレクトリに移動。
下記コマンドを実行したらパッケージがインストールされる。
composer install
インストール後は下記のようなディレクトリ構造になる。
(プロジェクトルート)/
├ composer.json
├ composer.lock
└ vendor/
- composer.json
インストールするパッケージ一覧 - composer.lock
インストールしたいパッケージに必要な関連パッケージを含めた一覧(composer.jsonと同じ記述形式) - vendor
インストールしたパッケージのソース本体
パッケージの追加/パッケージの削除/パッケージの最新版へのアップデート
- パッケージを追加の場合はcomposer.jsonに追加したいパッケージを追記して下記コマンドを実行。
- パッケージを削除の場合はcomposer.jsonに削除したいパッケージを消して下記コマンドを実行。
- 単純にインストール済みのパッケージのアップデートの場合は下記コマンド実行のみ。
composer update
他の環境でのインストール
例えばローカル環境でインストールしたパッケージをサーバー上でセットアップする場合。
下記コマンドを実行する。
composer update
#composer.json ファイルの解説
JSONの各要素の解説
- "require": { 導入したいパッケージの設定、JSON }
- "require-dev": {開発環境のみで使われる導入したいパッケージの設定、JSON }
composer install
やcomposer update
のときに--nodev
オプションを付けるとインストールされない - {パッケージの設定、JSON}
{"(開発者名)/(パッケージ名)": "(バージョン指定)"}
パッケージのバージョン指定
下記表の「対象となるバージョーン」の「最新版」がインストールされる
直接指定
指定例 | 対象となるバージョン |
---|---|
1.0.2 | version = 1.0.2 |
レンジ
指定例 | 対象となるバージョン |
---|---|
>=1.0 | 1.0 <= version |
>=1.0,<2.0 | 1.0 <= version < 2.0 |
>=1.0,<1.1 || >=1.2 | 1.0 <= version < 1.1 もしくは 1.2 <= version |
- 「 」(スペース)「,」はAND
- 「||」はOR(※注意、上記表の「|」は全角で書いてます、半角で書いたらエスケープしても表の区切り文字として認識された・・・orz)
ワイルドカード
指定例 | 対象となるバージョン |
---|---|
* | 全て |
2.* | 2.0.0 <= version < 3.0.0 |
2.1.* | 2.1.0 <= version < 2.2.0 |
チルダ
指定例 | 対象となるバージョン |
---|---|
~2.1 | 2.1.0 <= version < 3.0.0 |
~2.2.3 | 2.2.3 <= version < 2.3.0 |
キャレット
指定例 | 対象となるバージョン |
---|---|
^1.3.2 | 1.3.2 <= version < 2.0.0 |
^2.0.2 | 2.0.2 <= version < 3.0.0 |
^0.3.2 | 0.3.2 <= version < 0.4.0 * |
*「0.x.x」というメジャーバージョンが0のときだけ例外、ちなみに「^1.3」という指定はないっぽい |
バージョンの表記
基本的に下記のようにバージョンナンバーを付けるのが一般的である
(メジャーバージョン).(マイナーバージョン).(パッチ)
##参考
- COMPOSER公式 - composer.jsonの説明
- QUARTETCOM TECH BLOG - [初心者向け] composerのバージョン指定方法
- A Day in Serenity (Reloaded) - Composerのバージョン指定方法でのチルダ(~)とキャレット(^)の違い
- composer.json - Composer ドキュメント日本語訳
コマンド
よく使うコマンドをメモ
composer install
最初にインストールするとき、依存関係を解決済みでその指定バージョンをインストールしたいとき使用
composer install
「composer.lock」がある場合「composer.lock」からそのままパッケージをインストール
「composer.lock」がない場合は「composer.json」から依存関係を解決してインストール
###オプション
-
--no-dev
「"require-dev"」はインストールしない
composer update
パッケージをアップデートするとき、パッケージを追加・削除したいときに使用
composer update
「composer.json」から依存関係を解決してパッケージをインストール
###オプション
-
--no-dev
「"require-dev"」はインストールしない
composer require
コマンドでパッケージを直接追加したいときに使用
composer require (パッケージ名)
指定パッケージを「composer.json」に追記してインストールする
オプション
-
--dev
「"require-dev"」の開発用の方にパッケージを追記する
その他コマンドの使い方は
下記のコマンド(「composer --help」ではなく単に「composer」だけ)を入力したらコマンド一覧が出て来る(英語)
composer
それか下記公式サイト
参考
Composerのインストール遅いねん
というときは
ウイルス対策ソフトを一時的にOFFにする
自分はこれが原因で激遅でした orz
ウイルス対策ソフトの何が原因で遅くなったかは原因不明ですが・・・
packagistのミラーサーバを日本国内のサーバに変更する
下記コマンドを実行
composer config -g repos.packagist composer https://packagist.jp
-
composer config [setting-key] [setting-value1] ... [setting-valueN]
コンポーザーに設定を追加 -
-g
グローバル環境に設定を追加。$COMPOSER_HOME/config.json
ファイルに追加
参考
Git使っている場合は
「.gitignore」に下記を追加するとコンポーザーでインストールしたパッケージはバージョン管理対象外になる。
よく使われている手法らしい。
vendor