推荐使用 composer 的 path repository 功能替代直接修改 vendor 代码,通过在 composer.json 中配置本地路径仓库并指定对应包版本,可实现本地实时调试且不破坏 vendor 结构。

直接在 vendor 里改代码不是长久之计,也容易被 composer update 覆盖。用 Composer 的 path repository 功能,把本地开发中的包映射进项目,既能实时调试,又完全不碰 vendor 原始结构。
配置本地 path repository
在项目的 composer.json 里添加自定义仓库,指向你本地的包目录:
{ "repositories": [ { "type": "path", "url": "../my-awesome-package" } ], "require": { "vendor/my-awesome-package": "dev-main" } }
注意几点:
-
url是相对于当前composer.json的路径,支持绝对路径或相对路径 - 本地包目录下必须有合法的
composer.json,且name字段要和require中一致 - 版本号(如
dev-main)需匹配本地包的分支名或version字段,Composer 会自动识别
让 Composer 优先使用本地包
默认情况下,Composer 可能仍从 Packagist 拉取稳定版。确保本地包生效,可以:
- 把
repositories放在composer.json顶部(顺序影响优先级) - 运行
composer update vendor/my-awesome-package --with-all-dependencies强制刷新该包 - 检查结果:
composer show vendor/my-awesome-package中的 “Source” 应显示path /xxx/xxx
开发时的小技巧
本地调试更顺手,可以配合这些做法:
- 在本地包中启用自动加载优化:确保
autoload配置正确,改完代码无需反复dump-autoload - 用
composer link(需插件)或软链接方式快速切换不同本地版本,但 path repository 更推荐、更标准 - 提交前删掉
repositories或注释掉——避免团队成员误用你的本地路径
基本上就这些。不用动 vendor,不改源码,改完立刻生效,还保持了依赖关系的清晰性。