👏

composer create-project xxxとは?

2020/11/23に公開

Laravel等でプロジェクト作成時に使用するcomposer create-project xxxコマンドを調べる。

本家ドキュメントはこちら
https://getcomposer.org/doc/03-cli.md#create-project

composer --help見てみる

composer は--helpオプションを付けるとhelpを表示してくれる

$ composer create-project --help

Usage:
  create-project [options] [--] [<package>] [<directory>] [<version>]

Arguments:
  package                              Package name to be installed
  directory                            Directory where the files should be created
  version                              Version, will default to latest

Options:
  -s, --stability=STABILITY            Minimum-stability allowed (unless a version is specified).
      --prefer-source                  Forces installation from package sources when possible, including VCS information.
      --prefer-dist                    Forces installation from package dist even for dev versions.
      --repository=REPOSITORY          Pick a different repository (as url or json config) to look for the package.
      --repository-url=REPOSITORY-URL  DEPRECATED: Use --repository instead.
      --add-repository                 Add the repository option to the composer.json.
      --dev                            Enables installation of require-dev packages (enabled by default, only present for BC).
      --no-dev                         Disables installation of require-dev packages.
      --no-custom-installers           DEPRECATED: Use no-plugins instead.
      --no-scripts                     Whether to prevent execution of all defined scripts in the root package.
      --no-progress                    Do not output download progress.
      --no-secure-http                 Disable the secure-http config option temporarily while installing the root package. Use at your own risk. Using this flag is a bad idea.
      --keep-vcs                       Whether to prevent deleting the vcs folder.
      --remove-vcs                     Whether to force deletion of the vcs folder without prompting.
      --no-install                     Whether to skip installation of the package dependencies.
      --ignore-platform-reqs           Ignore platform requirements (php & ext- packages).
  -h, --help                           Display this help message
  -q, --quiet                          Do not output any message
  -V, --version                        Display this application version
      --ansi                           Force ANSI output
      --no-ansi                        Disable ANSI output
  -n, --no-interaction                 Do not ask any interactive question
      --profile                        Display timing and memory usage information
      --no-plugins                     Whether to disable plugins.
  -d, --working-dir=WORKING-DIR        If specified, use the given directory as working directory.
      --no-cache                       Prevent use of the cache
  -v|vv|vvv, --verbose                 Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Help:
  The create-project command creates a new project from a given
  package into a new directory. If executed without params and in a directory
  with a composer.json file it installs the packages for the current project.
  
  You can use this command to bootstrap new projects or setup a clean
  version-controlled installation for developers of your project.
  
  php composer.phar create-project vendor/project target-directory [version]
  
  You can also specify the version with the package name using = or : as separator.
  
  php composer.phar create-project vendor/project:version target-directory
  
  To install unstable packages, either specify the version you want, or use the
  --stability=dev (where dev can be one of RC, beta, alpha or dev).
  
  To setup a developer workable version you should create the project using the source
  controlled code by appending the '--prefer-source' flag.
  
  To install a package from another repository than the default one you
  can pass the '--repository=https://myrepository.org' flag.
  
  Read more at https://getcomposer.org/doc/03-cli.md#create-project

翻訳

create-project コマンドは、与えられたパッケージから新しいディレクトリに新しいプロジェクトを作成します。パラメータを指定せずに composer.json ファイルのあるディレクトリで実行すると、現在のプロジェクトのパッケージをインストールします。 このコマンドを使って新しいプロジェクトを起動したり、プロジェクトの開発者のためにバージョン管理されたクリーンなインストールを設定することができます。 php composer.phar create-project vendorproject target-directory [version] パッケージ名と一緒に = や : を区切り文字としてバージョンを指定することもできます。 php composer.phar create-project vendorproject:version target-directory 不安定なパッケージをインストールするには、バージョンを指定するか --stability=dev (dev は RC, beta, alpha, dev のいずれかです) を使います。 開発者が作業可能なバージョンを設定するには、'--prefer-source' フラグを追加して、ソース管理されたコードを使ってプロジェクトを作成しなければなりません。 デフォルトのリポジトリ以外からパッケージをインストールするには、'--repository=https:/myrepository.org' フラグを指定します。 詳しくは https:/getcomposer.orgdoc03-cli.md を参照してください。

パッケージを指定して新しいプロジェクトを作成できる。

プロジェクト作成

laravelのパッケージはlaravel/laravelなので↓のように指定する。

$ composer create-project laravel/laravel xxx

カレントディレクトリにlaravelプロジェクトを作成する

xxxの部分を.にするとカレントディレクトリにlaravelプロジェクトを作成します。

$ composer create-project laravel/laravel .
// 待つ

$ tree -L 1
.
├── README.md
├── app
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── phpunit.xml
├── public
├── resources
├── routes
├── server.php
├── storage
├── tests
├── vendor
└── webpack.mix.js

フォルダを指定して作成する

パッケージ名の次にフォルダ名を指定するとフォルダを作成し、その中にLaravelプロジェクトを作成します。

$ composer create-project laravel/laravel project_name
// 待つ

$ tree -L 2 . 
└── project_name
    ├── README.md
    ├── app
    ├── artisan
    ├── bootstrap
    ├── composer.json
    ├── composer.lock
    ├── config
    ├── database
    ├── package.json
    ├── phpunit.xml
    ├── public
    ├── resources
    ├── routes
    ├── server.php
    ├── storage
    ├── tests
    ├── vendor
    └── webpack.mix.js

バージョンを指定して作成する

パッケージ名にバージョンを指定するとそのバージョンでLaravelプロジェクトを作成します。

laravelのバージョンはこちらに書いてあります。
https://github.com/laravel/laravel/tags

$ composer create-project "laravel/laravel=7.30.1" piyo
// 待つ
$ php artisan -V
Laravel Framework 7.29.3
(あれ、なんでバージョンが違うんだろう...)

バージョンが違う理由

create-projectで指定するバージョンはlaravel/laravelphp artisan -Vで表示されるバージョンはlaravel/frameworkのもので違う。

  • laravel/laravelパッケージはlaravelプロジェクトを作成する際に使用される雛形のパッケージ。
  • laravel/frameworkパッケージはlaravel自体のライブラリ。

laravel/laravelのcomposer.jsonにlaravel/frameworkのバージョンが指定してある。

https://github.com/laravel/laravel/blob/v7.30.1/composer.json
"laravel/framework": "^7.29",

^7.29と指定されているので7.29台の最新バージョン7.29.3がインストールされた。

Discussion