composer create-project xxxとは?
Laravel等でプロジェクト作成時に使用するcomposer create-project xxx
コマンドを調べる。
本家ドキュメントはこちら
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のバージョンはこちらに書いてあります。
$ composer create-project "laravel/laravel=7.30.1" piyo
// 待つ
$ php artisan -V
Laravel Framework 7.29.3
(あれ、なんでバージョンが違うんだろう...)
バージョンが違う理由
create-projectで指定するバージョンはlaravel/laravel
、php 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