用 path 仓库可直接调试本地 Composer 包:在项目 composer.json 中配置 repositories.type="path" 指向本地包路径,并 require 对应包名与版本,执行 composer update 包名生成符号链接;需注意运行 dump-autoload、IDE 设置源目录及避免提交 symlink。

直接在项目里调试本地 Composer 包,不需要反复 composer update 或发布到私有源——用 path 仓库 + repositories 就能实时改、实时跑。
为什么 composer require vendor/name 不行?
默认安装会拉远程 tag 或 dist 包,改本地代码完全没反应。必须让 Composer “知道”这个包现在就躺在你电脑某个文件夹里,而不是 GitHub 上。
-
composer.json里没配repositories,Composer 根本不查你本地路径 - 即使包已安装,
vendor/vendor/name是只读副本,改它会被下次composer install覆盖 - 用
git clone后composer install也不行——除非你把它当成“开发依赖”手动 link,但太绕
用 path 类型仓库强制本地映射
在项目根目录的 composer.json 里加一段配置,告诉 Composer:“这个包名,别去 Packagist 找,直接从我本机路径读”。
{
"repositories": [
{
"type": "path",
"url": "../my-local-package"
}
],
"require": {
"myvendor/mypackage": "*"
}
}
-
url必须是相对路径(从项目根目录算起),不能用~/或绝对路径 -
"*"版本号必须匹配你本地包composer.json里的version字段(比如"1.0.x-dev") - 执行
composer update myvendor/mypackage(不要全量 update,避免意外升级其他包) - 完成后
vendor/myvendor/mypackage会变成符号链接,指向../my-local-package
调试时要注意的三个坑
符号链接生效了,不代表万事大吉。PHP 自动加载、IDE 索引、Git 提交都可能出问题。
- 修改本地包后,如果报
Class not found,先运行composer dump-autoload——因为autoload信息缓存在vendor/composer/autoload_*.php里 - PHPStorm 默认不跟随 symlink 跳转,右键点击类名 →
Go to Declaration可能跳不到源码;需在Settings → Directories中把本地包路径标记为 “Sources” - 别在本地包里直接
git add .提交vendor/下的 symlink ——它只是快捷方式,提交没意义;真正要提交的是你../my-local-package目录下的改动
最麻烦的不是配置,而是忘记 composer dump-autoload 和 IDE 缓存刷新——这两步漏掉,你会花十分钟怀疑人生,其实就差一行命令。











