path仓库是本地开发未发布包或调试依赖的唯一可靠方式,直接软链接或复制源码到vendor,不走网络、不校验签名,需在项目composer.json中正确配置repositories,且本地包name必须与require完全一致。

composer 加载本地库:用 path 仓库类型最直接
本地开发中想试用还没发布到 Packagist 的包,或者要改依赖源码调试,path 是唯一可靠的方式。它不走网络,不校验签名,直接软链接(Linux/macOS)或复制(Windows)到 vendor 目录。
- 在项目根目录的
composer.json中添加仓库配置,必须写在repositories数组里,且类型为"type": "path" -
url值是本地路径,支持相对路径(如../my-package)和绝对路径(如/Users/me/my-package),但不能带file://前缀 - 目标目录下必须有合法的
composer.json,且其中name字段需与你require的包名完全一致(比如"myorg/my-package") - 执行
composer require myorg/my-package后,Composer 会创建符号链接(非 Windows)或硬拷贝(Windows),后续修改源码可立即生效
为什么 composer install 不拉取本地路径?检查这三点
常见现象是运行完 composer install 或 require,vendor 里没出现预期包,甚至报 Could not find package xxx —— 这不是缓存问题,而是配置没生效。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
-
repositories必须写在当前项目的composer.json里,不能只写在本地包自己的composer.json中 - 本地包的
composer.json里name和version必须明确,不能是dev-main以外的分支别名;若用dev-main,require时也得写"dev-main" - 路径里的
composer.json如果有语法错误(比如多逗号、单引号),Composer 会静默跳过整个仓库,不报错也不提示
path 仓库的版本行为和线上包不一样
本地 path 仓库不走版本解析逻辑,所谓 “安装 v1.2.0” 实际只是按你 require 时写的约束去匹配 composer.json 里的 version 字段,本质是字符串比对。
- 如果本地包
composer.json写的是"version": "1.2.0",那require "myorg/my-package": "^1.2"才能命中;写成"dev-main"就只能require "dev-main" - 没有自动更新机制:改了本地包的代码,不需要
composer update,只要文件保存就立刻反映到项目中(符号链接指向不变) - CI/CD 环境下
path仓库默认失效,因为路径不存在;上线前必须切换回 Packagist 或私有仓库,否则构建失败
插件类本地包要额外注意 autoload 和 bin
如果你引入的是 CLI 插件(比如自定义 composer 命令),除了路径配置,还要确保它的自动加载和可执行入口被正确识别。
- 本地包的
composer.json中必须有autoload配置(如"psr-4": {"MyPlugin\": "src/"}),否则类找不到 - 如果是命令行工具,需声明
bin字段,比如"bin": ["my-plugin"],且对应文件要有可执行权限(chmod +x)和正确的 shebang(如#!/usr/bin/env php) - 执行
composer install后,bin文件会被软链到项目根目录的vendor/bin/下,直接运行vendor/bin/my-plugin即可
repositories 的加载顺序、路径合法性、name 匹配精度都很敏感,出问题时往往连错误提示都没有,得一行行核对配置和文件结构。










