フレームワークの新規プロジェクトを作成するときに、composer create-project
を叩くのがお作法っぽいのですが、裏側で何がどうなっているのか見えなくて気持ち悪かったので調べてみました。
結論
対象パッケージをgit cloneしてからcomposer intsallするのとほぼ同じである。
git clone https://github.com/foo/bar
cd bar
composer install
一応下記のように公式ドキュメントにも書いてあるのですが、ちょっとわかりづいらいですね。
create-project
You can use Composer to create new projects from an existing package. This is the equivalent of doing a git clone/svn checkout followed by a composer install of the vendors.
実際の挙動を追って調べてみた
Ethna を例にとってみました。
新規プロジェクトを作る場合、下記コマンドを叩くようにREADMEに書いてあります。
composer create-project ethna/ethna-project -s dev Hoge
まずオプションの-s
ですが、これは--stability
の略で"Minimum-stability allowed"のことだそうです。
-s
の代わりにバージョンを直接指定してもよいみたいなので、下記のように書くこともできます。
composer create-project ethna/ethna-project Hoge dev-master
さてそれぞれの引数の意味はなんでしょうか。
composerのヘルプを見てみると、
create-project vendor/project target-directory [version]
と書いてあります。
つまり「ethna/ethna-project
というパッケージのmaster
バージョンを使ってHoge
ディレクトリにプロジェクトを作成しなさい」という意味に読めそうです。
実際に実行してみると、わらわらとパッケージのダウンロードが(composer installっぽい)行われて、最後にプロジェクト作成コマンドが実行されました。
create-project
と同じことを手作業で再現する
「create-project
はgit cloneしてcomposer installするのと同じである」と公式ドキュメントに書かれていたので、ほんまかいなと思って実際にやってみました。
git clone https://github.com/ethna/ethna-project.git
cd ethna-project
composer install
結果、create-project
したときとほぼ同じ結果になりました。
これでモヤモヤしてたのがすっきりしました。