PHPの依存管理ツールComposerのcomposer.jsonのプロパティの一覧


こんにちは、@9ensanです。

php-composer-dependency-management-01

今回はComposerでライブラリを管理したり、環境を作成する肝になるcomposer.jsonの記述される項目の説明です。
項目数が多いので今回は、どのような項目があってどのような値を設定するのか簡単に説明していきます。

 

それでは、解説です。

まず、大前提としてcomoser.jsonは、JSON形式で記述します。
こちらにcomposer.json用のJSON schemaが作成されているので、記述ルールについて疑問な時は確認してみるといいかと思います。
実際にこのJSON schemaはComposerのvalidateコマンドでも使用されているものになります。

プロパティ

どのようなものが存在するのか、簡単な説明と一緒に記述します。

  • name:パッケージ名を「vendor/project」の形式で記述します。
  • description:説明文。だいたい1行くらいの長さで記述します。
  • version:バージョンを記述(バージョン管理システムのtag名を使用するので記述しない方が良い)
  • type:パッケージのタイプ。library、metapackage、composer-installerの3種類が最初から用意されています。
  • keywords:パッケージに関連するキーワードの配列。検索時に利用されます。
  • homepage:対象プロジェクトのURLを記述します。
  • time:バージョンのリリース日を記述します。
  • license:ライセンスを記述します。
  • authors:パッケージの作者の情報を記述します。配列で複数人記述できます。
    • name:作者の名前
    • email:作者のメールアドレス
    • homepage:作者のホームページ
    • role:開発者や翻訳者のような作者の役割
  • support:プロジェクトのサポートに関わる情報を記述できます。
    • email:サポート用のメールアドレス
    • issues:Issue TrackerのURL
    • forum:フォーラムのURL
    • wiki:wikiのURL
    • irc:サポート用のIRCチャンネル
    • source:ブラウズ、ダウンロードするソースのURL
  • package links
    • require:このパッケージに必要なパッケージを記述します。
    • require-dev:このパッケージを開発やテストする為に必要なパッケージを記述します。
    • conflict:このパッケージに競合するパッケージを記述します。
    • replace:このパッケージによって置き換えられるパッケージを記述します。。
    • provide:このパッケージによって提供できる他のパッケージを記述します。。
    • suggest:このパッケージで強化や、便利になるパッケージを記述します。
  • autoload
    • psr-0:PSR-0に従ってオートロードする名前空間とパッケージルートからの相対パスのマッピングを定義します。名前空間に対応していないPEARスタイルもサポートします。
    • classmap:「vendor/composer/autoload_classmap.php」に「key => value」形式でクラスマップを登録するフォルダとファイルを記述します。
    • files:明示的に特定のファイルのオートロードが必要な時に記述します。
  • include-path:非推奨なので説明を省きます。
  • target-dir:インストール先を定義します。パッケージルート直下で名前空間を宣言している場合、オートロードが上手く動作しません。そういう場合にtaget-dirを名前空間に合うように設定することで解決できます。
  • minimum-stability:安定性でパッケージを絞り込むデフォルトの動作を定義します。
  • repositories:カスタムパッケージのリポジトリを設定します。(詳細な項目がありますが、それはまた後日に書きます。)
  • config:プロジェクトにのみ有効な設定を記述します。
    • vendor-dir:依存パッケージのインストール先ディレクトリ。デフォルトは「vendor」
    • bin-dir:プロジェクトのバイナリのシンボリックリンクを作成するディレクトリ。デフォルトでは「vendor/bin」
    • process-timeout:git cloneのような処理でプロセスが死んだと判断するまでの時間。回線の遅い環境や巨大な依存パッケージがある場合は数値を上げる必要があります。デフォルトは300秒です。
    • github-protocols:github.comの為に使用するプロトコルの優先順位。デフォルトでは「[“git”,”https”,”http”]」
    • github-oauth:ドメイン名とoauthキーを記述します。github上のプライベートリポジトリへのアクセスと、github APIのIPベースの低速制限を回避する為に使用します。
    • cache-dir:composerで使用する全てのキャッシュの保存先ディレクトリを指定します。デフォルトは「$COMPOSER_HOME/cache」
    • cache-files-dir:パッケージのzipファイルの保存先ディレクトリを指定します。デフォルトは「$cache-dir/files」
    • cache-repo-dir:リポジトリのメタデータの保存先ディレクトリを指定します。デフォルトは「$cache-dir/repo」
    • cache-vcs-dir:バージョン管理システムのメタデータの保存先ディレクトリを指定します。デフォルトは「$cache-dir/vcs」
    • cache-files-ttl:distパッケージのダウンロードファイルのキャッシュの有効期限。デフォルトでは6ヶ月
    • notify-on-install:インストール時の通知の設定。デフォルトはtrue
  • scripts:スクリプトを使ってインストール時のさまざまな部分をフックすることができます。
  • extra:スクリプトで使用できる追加データを記述できます。
  • bin:バイナリとして扱われ、configで設定されているbin-dirにシンボリックリンクを作成されるファイルを記述します。

 

よく分からないものもありますね…。
よく使うと思うものに関して、後日詳しく記述します。

関連する記事:

Facebookでコメント

コメント

  1. コメント 0

  1. トラックバック 0

*

return top