你啥时候使用“require-dev”?啥是常见的开发依赖项?
Posted
技术标签:
【中文标题】你啥时候使用“require-dev”?啥是常见的开发依赖项?【英文标题】:When do you use "require-dev"? What are common dev dependencies?你什么时候使用“require-dev”?什么是常见的开发依赖项? 【发布时间】:2013-09-02 10:17:05 【问题描述】:虽然我熟悉 composer.json
的基础知识并在 require
键下指定依赖项,但我还不太了解 require-dev
的用途 — Composer 的文档指出:
require-dev (root-only)
列出开发此包或运行测试所需的包, 等根包的开发要求由安装 默认。安装或更新都支持 --no-dev 选项 阻止安装开发依赖项。
在抽象上它是有道理的,但我很难想象我需要这个功能的情况。
require-dev
在工作流中的实际用例有哪些?
是否有应驻留在require-dev
但不在require
中的示例包(或多个包)?
【问题讨论】:
【参考方案1】:一个常见的例子是 phpunit,您在开发中需要它来运行您的测试套件,但在生产中通常不需要。它也可以是构建工具或类似的东西。不过,将所有内容都放入 require 并没有太大的危害,它只是意味着您在 prod 机器上安装了更多代码,并且可能会根据您的操作方式减慢构建速度。
【讨论】:
Gotchya,所以跟开发中的依赖没有关系? 不,它真的意味着开发你的包需要依赖,它与依赖本身的稳定性无关。 如何设置您的生产机器,让 composer 在您运行“composer install”时识别它在生产机器上? 您并没有真正设置机器,而是设置了部署脚本以便它运行composer install --no-dev
所以唯一的好处是您的vendor
文件夹在您的生产机器上更小?因为如果我使用例如 PHPUnit,那么 venoder/PHPUnit 中的文件只会在我调用类时包含,对吗?这在生产机器上永远不会发生。以上是关于你啥时候使用“require-dev”?啥是常见的开发依赖项?的主要内容,如果未能解决你的问题,请参考以下文章
你啥时候使用 Java 的 @Override 注解,为啥?