- 此问题在此处已有答案**:
What is the difference between require and require-dev sections in composer.json?(6个答案)
四年前关闭了。
我想知道require
和require-dev
之间的区别。 composer 网站没有提供很好的解释这两者之间的区别。
我没有得到的部分是来自 composer 官方文件的Lists packages required for developing this package, or running tests, etc.
。
3条答案
按热度按时间332nm8kg1#
require-dev
包是项目工作 * 不必要 * 的包,* 不应该 * 包含在项目的生产版本中。通常,这些是诸如
phpunit/phpunit
之类的包,您只会在开发期间使用它们。1sbrub3j2#
关键的区别在于Composer只会为“根包”安装
require-dev
依赖项,根包是运行composer install
的目录。根包是由
composer.json
在项目根定义的包,它是定义项目需求的主composer.json
。...并且
require-dev
文档指定它是“仅根目录”。在实践中,这意味着如果一个包作为其他东西的依赖项安装(即它安装到另一个项目的
vendor
文件夹),则不使用该包的require-dev
依赖项。因此,如果您在 YourProject 的
require-dev
列表中有phpunit
,并且我克隆 YourProject 并在yourproject/
目录中运行composer install
,Composer将把phpunit
安装到yourproject/vendor/
。因为我很可能正在 YourProject 上进行开发。作为开发的一部分,我可能希望运行 YourProject 的测试套件,为此我需要phpunit
。但是,如果我将 YourProject 添加为 MyProject 的依赖项,则安装
myproject
包也会安装yourproject
包,但不会安装phpunit
。您 * 可以 * 使用
--dev
和--no-dev
选项覆盖此行为,但默认行为取决于相关包是否为 *root包 *。yqkkidmi3#
对我来说很清楚
要求
列出此程序包所需的程序包。除非满足这些要求,否则不会安装此程序包。
必需开发(仅限根用户)
列出开发此软件包(1)或运行测试等所需的软件包。如果使用
--dev
运行安装程序,或如果不使用--no-dev
运行更新程序,则仅安装根软件包的dev要求。http://getcomposer.org/doc/04-schema.md
1.用于开发软件包的软件包