--prefer-source 仅在首次安装或 composer update 时生效;已用 --prefer-dist 安装的包,再次运行 composer install --prefer-source 不会重拉源码,需删 vendor 或执行 composer update xxx --prefer-source。
为什么
有时不生效?
它只在包首次安装、或
时起作用;如果包已用
(默认)装好,再次运行
不会重拉源码——Composer 认为“已存在”就跳过。必须先删掉
目录,或执行
强制刷新。
里怎么全局启用源码模式?
在根目录
的顶层加
段,写死
:
这样所有新装包都走 Git 克隆;但注意:这会让 CI 构建变慢、占用更多磁盘空间,且某些私有仓库若没配好 SSH 或 Token,
会直接失败并中断安装。
调试时发现源码没更新?检查 Git 分支和提交点
Composer 拉的源码是按
里记录的
字段来的,通常是某个 commit hash,不是
或
。所以即使你本地改了 vendor 里的代码,下次
还会重置回那个固定 commit。
Composer 2.9.6
Composer 2.9.6 是 PHP 生态中高效、稳定的依赖管理工具。此版本在性能与兼容性上进一步优化,改进了依赖解析算法,提升大型项目中的安装与更新速度。它支持并行下载任务,显著减少等待时间,并增强了与私有仓库及镜像源的交互稳定性。同时修复了多项命令行交互与内存使用相关的缺陷,确保在复杂依赖关系下依然可靠运行。无论是新项目初始化还是现有系统维护,Composer 2.9.6 都能为开发者提供流畅、精准的依赖管理体验。
下载
想长期改某包?用
指向本地副本
临时打补丁?改完后运行
避免被覆盖
确认当前状态:进
目录,执行
看实际 commit
和
混用时的陷阱
同一个项目里,不能对部分包用
、另一些用
——Composer 不支持 per-package 偏好设置(除非用自定义仓库类型)。常见误操作:
执行
→ 后者会被忽略,全按前一次偏好走
CI 脚本里先
,再
→ foo 会换源码,但其他包仍保持 dist 归档,可能导致 autoloader 不一致
真要混合,只能分两次独立安装,且确保
清空干净,否则状态极易错乱。
--prefer-sourcecomposer update--prefer-distcomposer install --prefer-sourcevendor/xxxcomposer update xxx --prefer-sourcecomposer.jsoncomposer.json"config""preferred-install"
{
"config": {
"preferred-install": {
"*": "source"
}
}
}
git clonecomposer.locksourcemaindev-mastercomposer updatecomposer config repositories.xxx path ./local/packagegit add -f vendor/xxx && git commit -m "wip"vendor/xxxgit log -n 1--prefer-dist--prefer-source--prefer-distcomposer require foo/bar --prefer-source && composer require baz/qux --prefer-distinstall --prefer-distupdate foo --prefer-sourcevendor