跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

什么是Composer的--dev选项?(区分开发与生产环境)

--dev 依赖是仅用于开发、测试、构建阶段的包,写入 composer.json 的 require-dev 字段,如 PHPUnit、PHPStan;生产部署应使用 composer install --no-dev 跳过它们,避免体积增大、安全风险和性能影响。 Composer 的
--dev
选项用于明确声明某个包是仅在开发阶段需要的依赖,不会被部署到生产环境。 什么是 --dev 依赖? 使用
composer require package-name --dev
安装的包,会被写入
composer.json
require-dev
字段,而非
require
字段。这类包通常包括测试工具(如 PHPUnit)、代码检查器(如 PHPStan、PHP_CodeSniffer)、本地开发服务器(如 Laravel Sail)、或调试辅助工具(如 laravel /tinker)。 它们对应用运行本身没有影响,只在开发、测试、构建阶段起作用。 安装时是否启用 --dev 会影响什么? 默认情况下,
composer install
composer update
会同时安装
require
require-dev
中的包。但你可以通过加参数控制: PHP 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。 下载
composer install --no-dev
:跳过
require-dev
中的所有包,只装生产依赖 —— 这是上线部署的标准做法
composer install
(不带参数):安装全部依赖,适合本地开发
composer update --no-dev
:更新时忽略开发依赖,防止误升级测试相关工具 如何验证一个包是不是 dev 依赖? 打开项目根目录下的
composer.json
,查看两个字段:
"require"
:列在这里的包是运行必需的,比如
"monolog/monolog"
"guzzlehttp/guzzle"
"require-dev"
:列在这里的是开发专用,比如
"phpunit/phpunit"
"fakerphp/faker"
执行
composer show --dev
可以只列出当前已安装的开发依赖;而
composer show
显示全部。 不加 --dev 会有什么风险? 如果把本该是开发用的包(比如测试框架)误装进
require
,会导致: 生产环境多出不必要的文件和类,增大部署体积 可能引入安全风险(例如开发工具自带 Web 界面或调试端点) 自动加载器加载更多无关类,轻微影响性能 CI/CD 流程中若未加
--no-dev
,可能因开发依赖冲突导致构建失败

相关文章