Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

フレームワークの新規プロジェクトを作成するときに、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.

https://getcomposer.org/doc/03-cli.md#create-project

実際の挙動を追って調べてみた

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したときとほぼ同じ結果になりました。
これでモヤモヤしてたのがすっきりしました。

DQNEO
PHP/Go/Perl/C/Docker/Linux/Git/AWS
http://dqn.sakusakutto.jp
mercari
フリマアプリ「メルカリ」を、グローバルで開発しています。
https://tech.mercari.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした