私は作曲家を使い始めていますが、それについてはほとんど知識がなく、Webアプリケーション開発の経験もほとんどありません。
Nettuts +チュートリアル をただ歩くだけなので、作曲家に関する基本的な質問があります。
{
"require": {
"laravel/framework": "4.0.*",
"way/generators": "dev-master",
"Twitter/bootstrap": "dev-master",
"conarwelsh/mustache-l4": "dev-master"
},
"require-dev": {
"phpunit/phpunit": "3.7.*",
"mockery/mockery": "0.7.*"
},
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
},
"scripts": {
"post-update-cmd": "php artisan optimize"
},
"minimum-stability": "dev"
}
通常、ソフトウェアは異なる環境で実行されます。
development
testing
staging
production
composer.json
のrequire
セクションで宣言されている依存関係は、通常、アプリケーションまたはパッケージを実行するために必要な依存関係です。
staging
production
require-dev
セクションで宣言された依存関係は、通常、
developing
testing
環境。
たとえば、アプリケーションを実際に実行するために使用されるパッケージに加えて、ソフトウェアの開発には次のようなパッケージが必要になる場合があります。
friendsofphp/php-cs-fixer
(コーディングスタイルの問題を検出および修正するため)squizlabs/php_codesniffer
(コーディングスタイルの問題を検出および修正するため)phpunit/phpunit
(テストを使用して開発を推進するため)現在、development
およびtesting
環境では、通常、次を実行します。
$ composer install
production
とdevelopment
の両方の依存関係をインストールします。
ただし、staging
およびproduction
環境では、アプリケーションの実行に必要な依存関係のみをインストールし、展開プロセスの一部として、通常は次を実行します。
$ composer install --no-dev
production
依存関係のみをインストールします。
言い換えれば、セクション
require
require-dev
実行時にインストールするパッケージをcomposer
に示します
$ composer install
または
$ composer install --no-dev
以上です。
注アプリケーションまたはパッケージが依存するパッケージの開発依存関係はインストールされません
参考のため、
作曲家のマニュアル によると:
require-dev(ルートのみ)
このパッケージの開発やテストの実行などに必要なパッケージをリストします。ルートパッケージのdev要件はデフォルトでインストールされます。
install
またはupdate
は、dev依存関係のインストールを防ぐ--no-dev
オプションをサポートしています。
したがって、composer install
を実行すると、開発の依存関係もダウンロードされます。
その理由は実際には非常に簡単です。特定のライブラリに貢献する場合、テストスイートまたは他の開発ツール(symfonyなど)を実行することができます。ただし、このライブラリをプロジェクトにインストールする場合、これらの開発依存関係は必要ない場合があります。すべてのプロジェクトにテストランナーが必要なわけではありません。
composerサイトから(十分に明らかです)
require#
このパッケージに必要なパッケージをリストします。これらの要件を満たさない限り、パッケージはインストールされません。
require-dev(ルートのみ)#
このパッケージの開発やテストの実行などに必要なパッケージをリストします。ルートパッケージのdev要件はデフォルトでインストールされます。インストールまたは更新は、dev依存関係のインストールを防ぐ--no-devオプションをサポートします。
Composerでrequire-devを使用すると、プロジェクトの開発/テストに必要であるが本番には必要ない依存関係を宣言できます。 (gitを使用して)本番サーバーにプロジェクトをアップロードすると、require-dev
部分は無視されます。
require sectionこのセクションには、本番環境にインストール/必要とされるより良い候補であるパッケージ/依存関係が含まれています。
require-devセクション:このセクションには、開発者がコード(or for the experiment purpose on her local machine and she wants these packages should not be installed on the production environment.)
をテストするために使用できるパッケージ/依存関係が含まれています
一般的なルールは、ローカル環境などの開発(dev)環境でのみrequire-devセクションからパッケージを取得することです。
require-devセクションのパッケージは、アプリのデバッグ、テストの実行などに役立つパッケージです。
stagingおよびproduction環境では、おそらくrequireセクションのパッケージのみが必要です。
とにかく、どの環境でもcomposer install --no-devおよびcomposer update --no-devを実行できます。コマンドは、 requiredセクションはrequire-devからではありませんが、おそらくstagingおよびプロダクション環境はローカルではありません。
理論的には、すべてのパッケージをrequireセクションに入れることができますが、何も起こりませんが、次の理由で実稼働環境でパッケージを開発することは望ましくありません。
require-devの適切な候補は次のとおりです。
"filp/whoops": "^2.0",
"fzaninotto/faker": "^1.4",
"mockery/mockery": "^1.0",
"nunomaduro/collision": "^2.0",
"phpunit/phpunit": "^7.0"
上記のパッケージが何をしているのかを見ることができ、本番環境でそれらが必要ない理由がわかります。