64
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Organization

Composerのcreate-projectが何をやっているのか調べてみた

フレームワークの新規プロジェクトを作成するときに、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したときとほぼ同じ結果になりました。
これでモヤモヤしてたのがすっきりしました。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
64
Help us understand the problem. What are the problem?