跳转到主内容
极星编程网:以代码为星,赴技术山海!

如何在Composer中使用--prefer-source下载完整源码?(调试必备)

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

相关文章