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