require用于生产环境必需的依赖,如框架核心;2. require-dev用于开发工具类库,如测试和分析工具;3. 两者在composer.json中独立存在,安装时可通过--no-dev排除开发依赖。

如果您在使用 Composer 管理 PHP 项目的依赖时,注意到 require 和 require-dev 的不同配置项,可能会对它们的实际用途和影响感到困惑。以下是这两个配置项的具体差异和使用场景说明。
本文运行环境:MacBook Pro,macOS Sonoma
require 配置项用于声明项目在生产环境中必须依赖的外部库。这些依赖是应用程序正常运行所不可或缺的组成部分。
1、当执行 composer install 时,Composer 会自动安装 require 中列出的所有包。
2、在部署到生产环境时,这些依赖会被包含进去,确保应用功能完整。
3、通过命令 composer require package/name 添加的包默认会被写入 require 字段。
4、典型示例包括框架核心组件,如 laravel/framework 或数据库抽象层 doctrine/dbal。
require-dev 配置项用于定义仅在开发阶段需要的工具类库,不会被部署到生产环境中。
1、这些依赖通常用于代码测试、静态分析、调试或自动化构建任务。
2、执行 composer install --no-dev 时,require-dev 中的包将被跳过安装。
3、使用 composer require --dev package/name 可将包添加至 require-dev 区块。
4、常见示例包括 PHPUnit phpunit/phpunit、PHPStan phpstan/phpstan 等开发辅助工具。
composer.json 文件中,require 和 require-dev 是两个独立的顶级字段,各自维护不同的依赖列表。
1、require 列表中的包被视为正式依赖,影响所有环境。
2、require-dev 列表中的包标记为开发专用依赖,仅在开发机或 CI 流程中启用。
3、两者的依赖关系可能重叠,但作用范围明确分离。
4、发布包时,其他项目不会继承 require-dev 中的依赖项,避免污染下游项目。
根据是否启用开发依赖,Composer 的安装行为会发生变化。
1、运行 composer install 默认同时安装 require 和 require-dev 中的包。
2、在生产部署脚本中常使用 --no-dev 参数来排除开发依赖,减少体积和安全风险。
3、composer update 在有开发依赖的情况下会分别处理两个区块的版本约束。
4、生成的 autoload 文件会包含两个区域的类映射,但生产环境可通过优化自动加载提升性能。
以上就是composer require dev和require的区别_composer require与require-dev的用途差异详解的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号