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

Composer.json中config项怎么配_Composer高级配置参数指南【配置】

process-timeout建议设为600(开发机)或1800(CI/CD),禁用超时应通过环境变量而非config;fxp-asset插件已废弃,需删除相关配置并改用asset-packagist.org;sort-packages应设为true以提升协作效率;私有仓库认证信息必须通过auth.json管理,禁止硬编码。 config 里的
process-timeout
设多少才不超时又不浪费资源 Composer 安装或更新卡在 “Loading composer repositories with package information” 或 “Updating dependencies” 很久,大概率是
process-timeout
太小——它控制的是每个外部命令(比如
git clone
、
svn export
)的最长执行时间,单位秒,默认只有 300(5 分钟)。 真实场景下,私有 GitLab 仓库响应慢、CI 环境带宽受限、或拉取大体积包(如含二进制的
laravel/sail
)时,300 秒根本不够。但设成
0
(禁用超时)也不推荐:万一网络彻底卡死或远程服务假死,Composer 会无限挂起,CI 流水线直接阻塞。 普通开发机建议设为
600
(10 分钟),兼顾稳定性与响应感 CI/CD 环境可设为
1800
(30 分钟),并配合超时兜底(如 GitHub Actions 的
timeout-minutes
) 绝对不要在
config
里写
"process-timeout": 0
,改用环境变量
COMPOSER_PROCESS_TIMEOUT=0
临时覆盖更安全
fxp-asset
已废弃,
config.plugin.autoload
还要不要配 2018 年后 Composer 2.x 原生支持
fxp/composer-asset-plugin
的等效能力(通过
asset-packagist.org
或自建 asset VCS),所以这个插件本身已停更。但很多人还在
composer.json
的
config
里留着
"plugin-autoloader": true
或类似字段——这不仅无效,还可能触发 Composer 2.2+ 的警告甚至报错:
The "fxp/composer-asset-plugin" plugin requires composer-plugin-api 1.0.0, this *N*.* is not supported.
删掉所有含
fxp
、
plugin-autoloader
、
asset
相关的
config
键值对 如果项目仍依赖 Bower/NPM 包(如
jquery
、
bootstrap
),改用
asset-packagist.org
作为仓库:
"repositories": [{"type": "composer", "url": "https://asset-packagist.org"}]
确认
composer.lock
中不再出现
fxp/composer-asset-plugin
的条目,否则运行
composer update --lock
清理
config.sort-packages
开关影响 lock 文件可维护性
sort-packages
控制
composer.lock
里
packages
和
packages-dev
数组是否按字母序排列。默认
false
,但强烈建议设为
true
——这不是“美观问题”,而是协作效率问题。 php版微信js-sdk支付接口类 php版微信js-sdk支付接口类 下载 关闭时,每次
composer require
新包,新条目总追加到数组末尾,多人同时增删依赖会导致
composer.lock
出现大量无意义 diff(同一包在不同人机器上位置不同) 开启后,所有包按
name
字母序固化,Git 合并冲突大幅减少,
diff
只反映真实变更 注意:该配置只影响新生成的
lock
文件,已有
lock
不会自动重排;需先删
composer.lock
,再运行
composer install
重建 私有仓库认证信息别硬编码进
config
有人把 GitLab 或 Nexus 的 token 直接写在
composer.json
的
config.gitlab-token
或自定义键里,这是严重安全隐患:一旦代码推送到公开仓库或被误提交,凭据立刻泄露。 一律用
auth.json
管理凭证:
~/.composer/auth.json
(全局)或项目根目录下的
auth.json
(需加
.gitignore
) 格式必须严格:
{"http-basic": {"your.repo.tld": {"username": "xxx", "password": "yyy"}}, "gitlab-token": {"gitlab.com": "zzz"}}
config
里只保留仓库声明,例如:
"repositories": [{"type": "composer", "url": "https://your.repo.tld/packages.json"}]
,认证由
auth.json
自动匹配域名 哪怕只是本地开发,也别图省事往
config
里塞密码——CI 环境通常靠环境变量注入 token,而
auth.json
支持从
COMPOSER_AUTH
读取 JSON 字符串,这才是标准链路。

相关文章