PHP
Composer

Composerの導入&使い方(初心者の復習用)

一度Composerを使ったけど使い方忘れてしまったという人向けに書いています

インストール

Linux

下記リンクを参考
Qiita - CentOS7にComposerをインストールする

Windows

公式サイトからインストーラーをダウンロードしてインストール。
途中で聞かれるPHP実行ファイルのパスはphp.exeのパスを指定。
(例)XAMPPだとC:\xampp\php\php.exe

Composer自体のアップデート

Linux

Windows

インストーラーでもう一度インスト―ルすればよい(自分の場合は上書きインストールで問題なかった)

使い方

一番最初

プロジェクトのルートディレクトリに「composer.json」ファイルを作成して下記のようにインストールしたいパッケージをJSON形式で書く。

composer.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 installcomposer 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 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のミラーサーバを日本国内のサーバに変更する

下記コマンドを実行

ミラーサーバをpackagist.jpに変更
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

全体を通しての参考