生产环境快速执行composer install必须用--no-dev --optimize-autoloader --classmap-authoritative --no-interaction --prefer-dist --no-autoloader --no-scripts --no-plugins,缺一不可:前者排除开发依赖、生成静态类映射、强制仅查classmap、避免交互卡住;后者加速下载、跳过无意义autoload生成与脚本执行,确保部署确定性与极致速度。

Composer export 命令本身不存在 —— 你实际想优化的是 composer install 或 composer update 在生产环境“导出式部署”场景下的执行速度。 这类场景常见于 CI/CD 构建后生成可部署包、Docker 多阶段构建中提取 vendor 目录,或手动打包发布。真正的瓶颈不在“导出”,而在安装阶段的冗余动作和加载开销。
为什么 composer install --no-dev 不够快
默认 composer install --no-dev 仍会:生成完整 autoload 文件、执行所有 post-install-cmd 脚本、下载并解压源码(而非压缩包)、校验每个包的哈希值、尝试加载 Xdebug(若启用)。这些对纯部署毫无意义,却吃掉 40%+ 时间。
- 必须显式加
--prefer-dist:强制走 .zip/.tar.gz 包,比 git clone 快 3–5 倍,且跳过 git 操作开销 - 必须加
--no-autoloader:跳过生成vendor/autoload.php,部署后再统一 dump(避免在构建时反复解析 PSR-4) - 必须加
--no-scripts:防止触发post-install-cmd中的 npm run build、php artisan optimize 等重型操作 - 若用 Docker 构建,建议再加
--no-plugins:插件(如 composer-bin-plugin)在构建镜像时无作用,且可能触发额外网络请求
composer install 后补 dump-autoload 的正确顺序
跳过自动加载生成后,不能直接运行 PHP —— 但也不能随便补。关键点是:补的时机、参数组合、以及是否依赖 OPcache。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 补 autoload 必须用
composer dump-autoload --optimize --classmap-authoritative(不是-o -a缩写,避免被误读) - 该命令必须在目标环境(如容器内)执行,而非本地构建机 —— 因为
--classmap-authoritative依赖真实文件系统路径,跨平台软链接会导致 classmap 错位 - 如果目标环境开了 OPcache,确保
opcache.enable_cli=1,否则autoload_classmap.php不会被缓存,优化失效 - 不要在
composer.json里设"classmap-authoritative": true后再跑dump-autoload—— 它只影响install/update时的行为,对dump-autoload无效
CI/CD 中真正提速的三件事
很多团队花时间调参数,却忽略更底层的耗时来源:DNS 解析、TLS 握手、PHP 进程启动开销。这些在流水线中尤为明显。
- 全局镜像必须生效:
composer config -g repo.packagist https://mirrors.aliyun.com/composer/+composer clear-cache,否则--prefer-dist仍卡在Resolving dependencies - 禁用 Xdebug:
php -d xdebug.mode=off $(which composer) install ...,Xdebug 会让依赖解析慢 6–8 倍,CI 默认常开启 - 内存限制要放开:
COMPOSER_MEMORY_LIMIT=-1,尤其当composer.lock含大量嵌套依赖时,128M 默认值极易触发重试和超时
最容易被忽略的是:你在 Dockerfile 里用 RUN composer install,但没指定用户,导致 ~/.composer/cache 写入失败,每次构建都重下全部 dist 包 —— 缓存没生效,所有优化归零。










