php require和require-dev之间的区别是什么?[duplicate]

1aaf6o9v  于 2023-01-01  发布在  PHP
关注(0)|答案(3)|浏览(172)
    • 此问题在此处已有答案**:

What is the difference between require and require-dev sections in composer.json?(6个答案)
四年前关闭了。
我想知道requirerequire-dev之间的区别。 composer 网站没有提供很好的解释这两者之间的区别。
我没有得到的部分是来自 composer 官方文件的Lists packages required for developing this package, or running tests, etc.

332nm8kg

332nm8kg1#

require-dev包是项目工作 * 不必要 * 的包,* 不应该 * 包含在项目的生产版本中。
通常,这些是诸如phpunit/phpunit之类的包,您只会在开发期间使用它们。

1sbrub3j

1sbrub3j2#

关键的区别在于Composer只会为“根包”安装require-dev依赖项,根包是运行composer install的目录。
根包是由composer.json在项目根定义的包,它是定义项目需求的主composer.json
...并且require-dev文档指定它是“仅根目录”。
在实践中,这意味着如果一个包作为其他东西的依赖项安装(即它安装到另一个项目的vendor文件夹),则不使用该包的require-dev依赖项。
因此,如果您在 YourProjectrequire-dev列表中有phpunit,并且我克隆 YourProject 并在yourproject/目录中运行composer install,Composer将把phpunit安装到yourproject/vendor/。因为我很可能正在 YourProject 上进行开发。作为开发的一部分,我可能希望运行 YourProject 的测试套件,为此我需要phpunit
但是,如果我将 YourProject 添加为 MyProject 的依赖项,则安装myproject包也会安装yourproject包,但不会安装phpunit
您 * 可以 * 使用--dev--no-dev选项覆盖此行为,但默认行为取决于相关包是否为 *root包 *。

yqkkidmi

yqkkidmi3#

对我来说很清楚
要求
列出此程序包所需的程序包。除非满足这些要求,否则不会安装此程序包。

必需开发(仅限根用户)
列出开发此软件包(1)或运行测试等所需的软件包。如果使用--dev运行安装程序,或如果不使用--no-dev运行更新程序,则仅安装根软件包的dev要求。

http://getcomposer.org/doc/04-schema.md
1.用于开发软件包的软件包

相关问题