[PHP] Composerのpreferred-installはパッケージごとの指定も可能
こんにちは、ナカエです。 本日は、Composerのpreferred-installの設定に知らない機能があったのでそのメモ書きです。
PHPとComposerを使って依存関係にある2つのパッケージを開発するためには、vendor以下のパッケージのディレクトリにもVCSの情報が必要です。 大抵指定されていること多いprefer-distの状態ではVCSの情報(今回は.gitディレクトリ)が含まれないため、composer requireコマンドのオプションにprefer-sourceをつけてパッケージをインストールする必要があります。 コマンドをいちいち打つのは手間なので、この設定をcomposer.jsonでなんとかしたいというのが今回調査したきっかけです。
このprefer-dist相当の設定はcomposer.jsonに用意されており、
"config": {
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true
}
のように一括の指定しかできないと思っていました。 基本的にvendor以下の1パッケージのみVCSの情報を付与したいだけなので、他のディレクトリにもVCSの情報が含まれる無駄をなんとかしたいところです。 GitHubのlocal package --prefer-source optionというissueにたどり着いて、どうやらこの問題は2016年には解決されているらしいことがわかりました。
その流れでドキュメントのpreferred-install | Config - Composerを確認すると
{
"config": {
"preferred-install": {
"my-organization/stable-package": "dist",
"my-organization/*": "source",
"partner-organization/*": "auto",
"*": "dist"
}
}
}
のようにパッケージごとの指定が可能だったことが判明しました。
公式ドキュメントの大事さを再確認した次第であります。
参考
複数パッケージの同時開発については下記が詳しいです。
preferred-installの個別指定機能については日本語記事も一つだけ見つけました。この記事は読んでいたはずなのに該当箇所を読み流してしまっていて悔しい……