sli*_*ier 227 php installation composer-php
我是新来的composer,我想知道的区别require和require-dev.作曲家网站没有很好地解释这两者之间的区别.
我没有得到的部分Lists packages required for developing this package, or running tests, etc.来自Composer Official Docs.
Sco*_*ler 217
该require-dev包是包没有必要为您的项目工作,不应该包括在生产项目的版本.
通常,这些是phpunit/phpunit您只在开发期间使用的包.
小智 52
我觉得很清楚:
要求
列出此程序包所需的程序包.除非满足这些要求,否则不会安装包.
require-dev(仅限root)
列出开发此软件包 (1)或运行测试等所需的软件包.如果在运行安装时运行安装,
--dev或者如果没有运行更新,则将安装根软件包的开发需求--no-dev.
http://getcomposer.org/doc/04-schema.md
1.用于开发包的包
Nat*_*ike 40
关键的区别是Composer只会require-dev为"root package" 安装依赖项 - 您运行的目录composer install.文档将其描述为:
根包是由
composer.json项目根目录定义的包.它是composer.json定义项目需求的主要部分.
...并且require-dev文档指定它是"仅root".
实际上,这意味着require-dev如果将软件包作为其他东西的依赖项安装(即它安装到另一个项目的vendor文件夹),则不会使用软件包的依赖项.
因此,如果您phpunit在YourProject的require-dev列表中,并且我克隆了YourProject并在目录中运行,则Composer将安装到,因为我可能正在对YourProject进行一些开发.作为开发的一部分,我可能想要运行YourProject的测试套件,并且我需要这样做.composer installyourproject/phpunityourproject/vendor/phpunit
但是,如果我将YourProject添加为MyProject的依赖项,安装该myproject程序包也会安装该yourproject程序包,但它不会安装phpunit.
您可以使用--dev和--no-dev 选项覆盖此行为,但默认行为取决于相关的包是否为根包.