Composer如何精简vendor目录_Composer安装排除开发依赖【优化】-composer

正确参数是 –no-dev,需在 composer install 或 update 时显式指定,它跳过 require-dev 中的包安装,节省空间并避免安全误报,但不改变 autoload-dev 映射。

composer install 时跳过 dev-dependencies 的正确参数

生产环境部署时,vendor 目录里混入 phpunit、mockery、phpstan 这类开发依赖,不仅浪费磁盘空间,还可能引入意外的自动加载或安全扫描误报。核心解法是明确告诉 Composer:只装 require 里的东西,别碰 require-dev。

必须用 --no-dev 参数,且它只在 install 和 update 时生效:

composer install --no-dev

注意:--no-dev 不会影响 autoload-dev 的注册(即不会自动删掉测试类的 PSR-4 映射),但那些包本身不会被下载和安装,所以 autoload 部分实际无效——这点常被忽略。

  • CI/CD 流水线中务必加 --no-dev,否则构建镜像体积可能多出 30–50MB
  • composer update --no-dev 会清掉已安装的 dev 包,但不会重写 composer.lock 中的 dev 依赖记录
  • 如果项目用了 config.platform 模拟 PHP 版本,--no-dev 下它依然生效,不影响兼容性判断

如何永久禁用 dev 依赖(不靠每次加参数)

没有“永久关闭”的全局开关,但可通过配置让 install 默认跳过 dev 包。关键在 composer.json 的 config 段:

"config": {
  "platform-check": false,
  "preferred-install": "dist",
  "sort-packages": true,
  "allow-plugins": {
    "dealerdirect/phpcodesniffer-composer-installer": true
  }
}

上面这段本身不控制 dev 行为。真正起效的是环境变量或项目级配置:

  • 在部署机上设 COMPOSER_NO_DEV=1,之后所有 composer install 自动带上 --no-dev
  • 或在项目根目录放 composer.json 同级的 composer.local.json(需配合插件),但原生不支持,不推荐
  • 更稳妥的做法:把 composer install --no-dev 写进部署脚本或 Dockerfile,不依赖环境变量

别信某些博客说改 minimum-stability 或删 require-dev 能“一劳永逸”——前者无关,后者直接破坏本地开发。

vendor 目录仍很大?检查这些隐藏膨胀源

即使用了 --no-dev,vendor 仍可能超预期,常见原因不是依赖本身,而是缓存、文档、测试文件残留:

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » Composer如何精简vendor目录_Composer安装排除开发依赖【优化】-composer
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4011947+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4011947+
  • 本周更新: 0+
  • 最后更新: 2026-03-16