Composer php composer.json中require和require dev部分之间有什么区别?
我开始使用composer,我对它知之甚少,对web应用程序开发也有一点经验 我只是随便说说,所以我有一个关于作曲家的基本问题Composer php composer.json中require和require dev部分之间有什么区别?,composer-php,Composer Php,我开始使用composer,我对它知之甚少,对web应用程序开发也有一点经验 我只是随便说说,所以我有一个关于作曲家的基本问题 { "require": { "laravel/framework": "4.0.*", "way/generators": "dev-master", "twitter/bootstrap": "dev-master", "conarwelsh/mustache-l4": "dev-master" }, "require-d
{
"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"
}
“require dev”
部分中的是什么,都将仅与composer install--dev
一起下载和安装“require dev”
部分?这是因为我们想要获得软件包的特定版本而不是始终获得最新的稳定版本吗安装
或更新
都支持防止安装开发依赖项的--no dev
选项
因此,运行composer安装
也将下载开发依赖项require dev
部分将被忽略
也可以查看和发布的此答案。不同的环境
通常,软件将在不同的环境中运行:
开发
测试
staging
生产
composer.json
的require
部分中声明的依赖项通常是在中运行应用程序或包所需的依赖项
staging
生产
require dev
部分中声明的依赖项通常是
开发
测试
(用于检测和修复编码风格问题)friendsofphp/php-cs-fixer
(用于检测和修复编码风格问题)squizlabs/php\u codesniffer
(使用测试驱动开发)phpunit/phpunit
- 等等
开发
和测试
环境中,您通常会运行
$ composer install
$ composer install --no-dev
安装生产
和开发
依赖项
但是,在staging
和production
环境中,您只希望安装运行应用程序所需的依赖项,并且作为部署过程的一部分,您通常会运行
$ composer install
$ composer install --no-dev
仅安装生产
依赖项
语义学
换句话说,这些部分
require
require dev
composer
指示运行时应安装哪些软件包
$ composer install
或
仅此而已
注意您的应用程序或软件包所依赖的软件包的开发依赖关系将永远不会安装
有关参考,请参阅:
- 速度
- 可能会暴露一些调试信息
- 等 一些优秀的候选人需要开发
- 要求部分
本节包含在生产环境中安装/需要的最佳候选程序包/依赖项
需要开发部分:此部分包含可供开发人员用于测试其代码(或在其本地计算机上进行实验,但她不希望在生产环境中安装这些软件包)的软件包/依赖项.一般规则是,您只希望在开发(dev)环境(例如本地环境)中使用来自require dev部分的包 require dev部分中的包是帮助您调试应用程序、运行测试等的包 在暂存和生产环境中,您可能只需要要求部分中的包 但无论如何,您可以在任何环境中运行composer安装--no dev和composer更新--no dev,该命令将只安装必需的部分而不是必需的中的包,但您可能只想在暂存和生产环境中运行此功能,而不是在本地环境中运行 理论上,您可以将所有包放在require部分中,但不会发生任何事情,但您不希望在生产环境中开发包,原因如下: