必须用path类型仓库,其他方式会导致autoload失效或调试不闭环;需严格对齐路径、包名、composer.json三要素,并手动执行dump-autoload--dev及验证symlink真实生效。

必须用 path 类型仓库,其他方式要么 autoload 断掉,要么改代码不生效——这是本地包调试唯一能闭环的路径。
为什么不能直接 require 本地目录或手动复制到 vendor
常见错误现象:Class not found、composer dump-autoload 无反应、Windows 下静默 fallback 成 copy、改了 src 里的类却始终跑旧逻辑。
-
composer require vendor/name:dev-main+ 本地目录路径,不加repositories配置 → Composer 仍去 Packagist 查,根本找不到包 - 手动把代码拖进
vendor/vendor/name→ autoload 不识别该路径,composer dump-autoload完全无效 - 用 Git URL +
@dev→ 每次改代码都得git commit && git push才能composer update,失去“本地调试”意义
path 仓库配置的三个硬性对齐点
90% 的 Could not find package 错误,都卡在这三处没对齐:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 主项目
composer.json的repositories.url必须是**相对于该文件的路径**,比如"../my-package"(不能以/开头,也不能含~或变量) - 主项目
require中的包名必须和本地包composer.json的"name"字段**逐字一致**:大小写、短横线-、斜杠/全部吻合,"acme/utils"≠"Acme/Utils" - 本地包根目录下必须存在合法
composer.json,且不能有尾逗号、单引号、中文字符;url指向的是这个文件所在目录,不是文件本身
autoload 生效前必须手动触发的两件事
即使 vendor/vendor/name 已是符号链接,类还是加载不到?大概率是 autoload 映射没更新。
-
autoload和autoload-dev的 PSR-4 映射末尾必须带反斜杠:"MyPackage\": "src/",少一个就断掉 - 测试类在
tests/Http/ClientTest.php,命名空间是MyPackageTestsHttp,那autoload-dev就得写成"MyPackage\Tests\": "tests/"(注意层级完整) - 改完
composer.json后,必须显式运行:composer dump-autoload --dev,否则vendor/composer/autoload_dev.php不重建
验证 symlink 是否真生效,别只看 vendor 目录
符号链接失效是最隐蔽的坑:你以为改的是源码,其实 vendor 里是静态副本。
- Linux/macOS:运行
readlink vendor/vendor/name,输出应为完整绝对路径;若为空或报错,说明 fallback 成 copy - Windows:运行
dir vendorendor ame,看到JUNCTION或<symlinkd></symlinkd>才算成功;普通文件夹 = 失败 - 关键补救:本地包自己的
composer.json必须含"options": {"symlink": true},缺这句,Windows 管理员权限也没用 - Docker 场景需加
--cap-add=SYS_ADMIN,且挂载目录要支持 symlink(如用bind而非volume)
真正麻烦的从来不是配对 name 或写对路径,而是当 readlink 显示正常、class_exists() 返回 ok、但 Xdebug 断点就是不进——这时候得核对 IDE 中打开的文件路径,是否和 readlink 输出的真实磁盘路径完全一致。










