composerでGitHubのリポジトリからパッケージ追加する方法
https://getcomposer.org/img/logo-composer-transparent2.png
composerはパッケージマネージャー。
Packagist に公開されていないGitHubリポジトリとかもcomposerで導入することができる。 A. コマンドラインで追加する方法
まずはリポジトリを登録する。
composer config repositories.my/repo vcs https://github.com/my/repo
これを実行すると、composer.jsonの repositories が以下のように書き換えられる。
code:composer.json
"repositories": {
"my/repo": {
"type": "vcs",
}
}
これで my/repo がcomposerで導入可能になった。
あとは composer require my/repo:dev-branchname すればよい。
require成功後はcomposer.jsonに以下が追記され、lockファイルも更新される。
code:composer.json
"require": {
"my/repo": "dev-branchname"
}
B: 先にcomposer.jsonを書く方法
ミスりやすいのであまりオススメはしません。composer.jsonをこんな感じに書きます。
code:composer.json
"repositories": {
"my/repo": {
"type": "vcs",
}
},
"require": {
"my/repo": "dev-branchname"
}
次に composer update nothing で、composer.jsonをもとにlockファイルを更新させます。
最後に composer install でlockファイルをもとにパッケージインストールさせればおk
P.S. stability-flag & minimum-stabilityについて
https://igor.io/img/composer/minimum-stability.png
composerにはstability-flagという概念があります。stableとかbetaとかそういうやつ。
このstability-flagはGitHubのリリースタグの末尾についています(ex. 2.0-beta)。
なにもついていないやつはstableと解釈されます。
リリースタグを切っていない場合でも、 dev-branchname の形で dev- プレフィックスをつけることで、ブランチ名でリポジトリのバージョンを指定することができます。
ただし、動作が正しいmasterブランチであろうが、ブランチ名を指定するとstabilityは dev (最低ランクのスタビリティ)として解釈されまいます。
デフォルトのminimum-stabilityはレベル stable なので、レベル dev をインストールすることが出来なかったりします(本当はパッケージの親子依存とかがあるとこれが起きるらしいが省略…↓に貼った記事を参照)
そこで stability-flag を書いてやることで、インストールするパッケージのスタビリティを明示することができます。
よって、GitHubに置いた自作リポジトリとかをComposerで入れたい場合は以下のようにするとよいです。
code:composer.json
"require": {
"my/repo": "dev-master@dev"
}