Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

一度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

全体を通しての参考

suke
アイコン画像は自分で描きました。 AndroidとWeb系ができます。 iOSと人工知能もできるようになりたい! GitHub: https://github.com/suke-shun-kato
https://play.google.com/store/apps/developer?id=Good+I+Story
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした