Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
65
Help us understand the problem. What is going on with this article?
@DQNEO

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.

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

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

65
Help us understand the problem. What is going on with this article?
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
DQNEO
PHP/Go/Perl/C/Docker/Linux/Git/AWS
mercari
フリマアプリ「メルカリ」を、グローバルで開発しています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
65
Help us understand the problem. What is going on with this article?