跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

Composer如何禁止下载开发依赖_Composer install只装核心包【常用】

composer install --no-dev是最直接的生产环境部署方式,它跳过require-dev依赖仅安装核心包,避免增大镜像、延长构建及安全风险,且不修改composer.lock。 composer install --no-dev 是最直接的解决方式 生产环境部署时,
composer install
默认会安装
require
和
require-dev
里的所有包。加
--no-dev
参数就能跳过开发依赖,只装
require
中声明的核心依赖。 这个参数在 CI/CD 流水线、Docker 构建、线上服务器部署中必须用,否则可能引入
phpunit
、
fakerphp/faker
、
symfony/var-dumper
等非运行时必需的包,增大镜像体积、延长构建时间,甚至带来安全风险。 它不会修改
composer.lock
,只是跳过安装
require-dev
下的包 如果本地
composer.lock
是带 dev 包生成的,
--no-dev
仍能正确读取并仅安装 production 部分 CI 脚本里建议固定写成
composer install --no-dev --no-interaction --optimize-autoloader
为什么不能靠删掉 composer. js on 里的 require-dev 来规避? 手动删
require-dev
字段看似“一劳永逸”,但实际会破坏协作一致性:
composer.lock
仍记录着 dev 包的版本和哈希,下次有人执行
composer update
或
composer install
(无
--no-dev
)就会还原回去 Git 提交删掉
require-dev
会导致团队成员本地开发时缺失测试工具,
phpunit
找不到、
phpcs
报错 某些包(如
laravel/pint
)虽在
require-dev
,但被
scripts
引用,删了字段会让
composer run
失败 如何确保 build 阶段一定不装 dev 包? 光靠人工加参数不可靠,尤其在自动化流程中。推荐三重保险: Docker Sandbox 创建并管理 Docker 沙箱虚拟机环境以安全执行代理。适用于运行不受信任代码、探索包或隔离代理工作负载。支持 Claude、Codex、Copilot、Gemini 和 Kiro 代理,并提供网络代理控制。 下载 在
composer.json
的
config
段加上
"platform": {"ext-xdebug": "0"}
(可选),配合
--no-dev
进一步防止因扩展检测误触发 dev 工具 Dockerfile 中明确使用
RUN composer install --no-dev --no-interaction --optimize-autoloader
,避免继承基础镜像的默认行为 CI 配置(如 GitHub Actions)里检查是否漏掉
--no-dev
:可用
grep -q "\-\-no-dev" composer-install-command.sh
做前置校验 composer create-project 怎么跳过 dev 包? 用
composer create-project
拉新项目时,默认也会装
require-dev
。想一步到位,得加两个参数:
--no-dev
:跳过开发依赖安装
--remove-vcs
:删掉 . git 目录,避免把模板仓库的提交历史带进来(常被忽略) 完整命令示例:
composer create-project laravel/laravel myapp --no-dev --remove-vcs
注意:
create-project
本质是 clone + install,所以
--no-dev
生效时机和
install
一致——它控制的是后续的依赖安装阶段,不是 clone 阶段。 真正容易被忽略的是:有些项目在
post-create-project-cmd
脚本里又偷偷调用了
composer install
(没带
--no-dev
),这时得去查
scripts
段并手动 patch。

相关文章