require-dev用于声明开发依赖,仅在开发时安装,不随包被引用时加载,避免污染生产环境。必须确保src/代码不引用这些依赖,防止运行时错误;可借助PHPStan等工具检查。测试、CI等场景应正常安装dev依赖以保障流程完整,仅在构建生产镜像时使用--no-dev。通过suggest字段提示可选功能依赖,如Symfony集成,帮助用户扩展。本地与CI环境保持一致,推荐用脚本封装命令如make test,提升协作效率。正确区分开发与运行时依赖,使包更清晰、专业。

在开发 Composer 包时,require-dev 用于声明仅在开发阶段需要的依赖,比如测试工具、静态分析器或构建脚本。正确管理这些依赖能避免将不必要的包带入生产环境,同时保证开发和测试流程顺畅。
require-dev 中的依赖只会在你直接开发这个包时安装,当其他项目通过 Composer 引入你的包时,默认不会加载这些开发依赖。
例如,你在包中使用 PHPUnit 进行测试:
{ "require-dev": { "phpunit/phpunit": "^9.5" } }当你克隆这个包并运行 composer install,PHPUnit 会被安装。但若别人在项目中 require 了你的包,PHPUnit 不会自动装进他们的 vendor 目录。
必须确保 require-dev 中的包不被主代码(src/)引用,否则会导致运行时错误。
src/ 文件中出现 use PHPUnit\... 这样的语句如果你的包提供了可选的集成组件(比如适配 Symfony 的 Bundle),而这类功能依赖额外库,应将其放入 require 并标记为“建议”(suggested)。
使用 suggest 字段提示用户:
这样既不强制安装,又能让用户知道如何扩展功能。
在持续集成(CI)环境中,应始终运行 composer install(默认包含 dev 依赖),以确保测试工具可用。
如果你在 CI 中使用 --no-dev,测试将无法执行。正确的做法是:
--no-dev
make test 自动处理依赖和执行基本上就这些。关键是分清哪些是开发工具,哪些是运行时必需项,保持主代码干净,让使用者清楚如何扩展。管理好 require-dev 能让你的包更专业、更易维护。
以上就是如何在开发 composer 包时管理其 require-dev 依赖?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号