Composer没有“快速导出加速功能”,所谓加速实为混淆了--prefer-dist(下载快)、--optimize-autoloader(安装快)和archive(静态打包)三类操作,真正导出需用composer archive配合exclude配置,且不可替代vendor部署。

Composer 没有“快速导出加速功能”这个东西——你搜到的可能是对 composer install --prefer-dist、composer dump-autoload --optimize 或 CI 中 vendor 缓存的误称。 它本身不提供类似 npm pack 或 pip wheel 的“导出包”能力,所谓“导出加速”,实际是三类不同操作的混淆:下载快、安装快、部署包小。下面分清楚再动手。
为什么 composer install --prefer-dist 不等于“导出”
它只是跳过 git clone 改走 ZIP 下载,适用于大多数公开包。但要注意:
- 私有 Git 仓库若配了
"type": "git"且没显式设"dist"字段,--prefer-dist会直接失败或回退到 source - 某些包在
composer.lock里已固定写死"source"类型(比如含未打 tag 的 dev 分支),加参数也无效 - 真正影响部署体积的是
vendor/里要不要保留.git、tests/、docs/—— 这得靠composer install --no-dev --optimize-autoloader配合archive配置
composer archive 才是真·导出,但默认不压缩无关文件
它生成 ZIP 包供分发,但原始行为很朴素:只打包 composer.json 声明的 autoload 和 bin 目录,不自动剔除测试、文档、.env.example 等。要真正“加速交付”(即减小包体积、加快传输),必须手动配置:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 在
composer.json顶层加"archive": {"exclude": ["/tests", "/docs", "/.github", "/.gitignore"]} - 确保
"autoload"只声明运行时必需的命名空间,避免把src/下所有子目录全扫进去 - 执行时加
--format=zip和--file=myapp.zip,别依赖默认名 - 注意:该命令不执行安装逻辑,也不处理依赖,纯静态打包 —— 所以不能替代
vendor/部署
CI/CD 中“导出加速”的真实瓶颈是缓存没复用
很多团队以为改个参数就能提速,结果流水线每次仍重下 200+ 包。关键在三处是否对齐:
- 全局
COMPOSER_CACHE_DIR必须指向 CI 持久化路径(如/cache/composer),且权限对当前 runner 用户可读写 -
composer install前必须先composer clear-cache?错。应该 跳过清缓存,让旧包复用;只在镜像源变更或 lock 大改时才清 - Docker 构建中,
vendor/不能放在COPY . .后再RUN composer install—— 正确顺序是:COPY composer.json composer.lock ./→RUN composer install --no-dev --optimize-autoloader→COPY . .
最容易被忽略的一点:你本地跑 composer archive 得到的 ZIP,和线上 composer install 后的 vendor/ 结构根本不是一回事。前者是源码快照,后者含生成的 autoload 文件、bin 软链、插件钩子产物。别拿 archive 包直接扔进生产容器当 vendor 用——autoload 会炸,vendor/bin 命令全失效。

















