不能在composer.json的config字段中直接设置--no-dev等命令行参数,正确做法是通过scripts定义自定义命令如"install-prod": "composer install --no-dev --optimize-autoloader",或在ci脚本中显式指定参数;config仅支持vendor-dir、process-timeout等配置项,不接受命令行开关。

composer.json 里加 "config" 块就能默认启用参数
想让 composer install 每次都自动带上 --no-dev、--optimize-autoloader 这些参数,不用每次敲命令时手动输,最直接的办法是改项目根目录下的 composer.json 文件,在 config 字段里声明。Composer 会读取这个配置并应用到后续所有命令中。
注意:这不是“全局默认”,而是项目级默认——只对当前项目生效,适合 CI/CD 或团队统一部署规范。
-
"process-timeout": 0防止大包安装超时中断 -
"preferred-install": "dist"等价于--prefer-dist,跳过 git clone -
"sort-packages": true让composer.json里的依赖顺序固定,减少 diff 干扰
全局 config 不等于命令默认参数
很多人误以为用 composer config -g 设置全局镜像或超时,就能让 install 自动加 --no-dev。其实不能:config -g 只影响网络、缓存、路径等底层行为,不控制命令行参数的默认开关。
比如你执行 composer config -g process-timeout 0,确实能让所有项目超时不中断;但 composer install 依然会装 require-dev,除非你显式加 --no-dev 或在项目 composer.json 的 config 里写死。
- 全局 config 适合设
repo.packagist、cache-dir、github-oauth - 参数级默认(如 --no-dev)必须落在项目
composer.json的config下 - CI 脚本里别依赖全局 config —— runner 用户可能没配,或配错用户上下文
config 里不能写 --no-dev 这种命令行参数
composer.json 的 config 字段不接受命令行参数语法。你不能写 "no-dev": true 或 "optimize-autoloader": true —— 这些不是合法 config 键。
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
真正起效的方式只有两种:
- 在 CI/CD 脚本里固定写全参数:
composer install --no-dev --optimize-autoloader --no-interaction --prefer-dist - 用 Composer 的
scripts声明自定义命令:"scripts": {"install-prod": "composer install --no-dev --optimize-autoloader --no-interaction"},然后运行composer run install-prod
别试图在 config 里伪造参数名,Composer 会静默忽略,且不会报错。
最容易被忽略的点:--no-dev 和 --optimize-autoloader 必须同时出现才有效
只加 --no-dev 不优化 autoload,类加载仍要遍历目录;只加 --optimize-autoloader 却不加 --no-dev,classmap 会把 tests/、vendor/bin 下的类也扫进去,体积更大、启动更慢。
验证是否真生效,看 vendor/composer/autoload_static.php 里 $classMap 数组长度和内容是否合理,而不是只检查文件是否存在。










