需求和需求开发之间有什么区别?

2022-08-30 06:10:05

我是新手,我想知道 和 之间的区别。作曲家网站没有很好地解释这两者之间的区别。composerrequirerequire-dev

我没有得到的部分来自作曲家官方文档。Lists packages required for developing this package, or running tests, etc.


答案 1

包是项目工作不需要的包,不应包含在项目的生产版本中。require-dev

通常,这些是仅在开发期间使用的包。phpunit/phpunit


答案 2

关键的区别在于,Composer 只会安装“根包”(运行目录)的依赖项。文档将其描述为:require-devcomposer install

根包是由项目根目录的 定义的包。它是定义项目要求的主要内容。composer.jsoncomposer.json

...并且 require-dev 文档指定它是“仅根目录”。

在实践中,这意味着如果将包作为其他内容的依赖项安装(即它安装到另一个项目的文件夹中),则不会使用包的依赖项。require-devvendor

因此,如果您在YourProject列表中,并且我克隆了YourProject并在目录中运行,Composer将安装到,因为很可能我正在YourProject上进行一些开发。作为开发工作的一部分,我可能想要运行YourProject的测试套件,为此我需要。phpunitrequire-devcomposer installyourproject/phpunityourproject/vendor/phpunit

但是,如果我将YourProject添加为MyProject的依赖项,则安装软件包也会安装该软件包,但它不会安装phpunitmyprojectyourproject

您可以使用选项覆盖此行为,但默认行为基于相关包是否为根包--dev--no-dev


推荐