必须用path类型仓库,且本地包composer.json的name和version须与主项目require严格一致;否则composer install报“Could not find a matching version”,因Composer仅校验本地目录下composer.json的name(如"myorg/http-client")是否完全匹配require声明,且version不能为空,推荐设为"dev-main"。

必须用 path 类型仓库,且本地包的 composer.json 中 name 和 version 要与主项目 require 字段严格一致;否则 composer install 会报 Could not find a matching version of package。
本地包的 composer.json 必须含合法 name 和 version
这是最常被跳过的一步。Composer 不会“猜”你的包叫什么,它只校验本地目录下 composer.json 的 name(如 "myorg/http-client")是否和主项目 require 里写的完全一致(包括 vendor 名),且 version 不能为空。
-
version推荐写"dev-main"或"1.0.x-dev",避免用"*"或留空 —— 否则composer update可能拒绝解析 - 本地包目录需已执行过
git init并至少有一个 commit,否则 Composer 会静默忽略该目录 - 若本地包默认分支不是
main(比如是develop),则主项目中require必须写"myorg/http-client": "dev-develop",而非"dev-main"
主项目 composer.json 的 repositories 配置要点
路径必须是相对路径(从主项目 composer.json 所在位置起算),且指向**目录**,不是 composer.json 文件本身。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 正确示例:
"url": "../http-client"或"url": "./packages/http-client" - 错误示例:
"url": "~/projects/http-client"(含~)、"url": "/abs/path/to/composer.json"(指向文件)、"url": "../http-client/composer.json" - 多个本地包可共用一个
repositories数组,每项独立声明type: "path"和对应url - 不要在
require字段直接写路径 ——"myorg/http-client": "./packages/http-client"是非法语法,必定失败
软链接生效的条件与验证方式
默认情况下,composer install 对 path 包创建符号链接(Linux/macOS)或复制(Windows),但前提是系统支持且未被覆盖。
- Linux/macOS 下:确认启用软链只需运行
ls -la vendor/myorg/http-client,输出含->即表示成功 - Windows 下:需开启“开发者模式”或以管理员权限运行终端,否则 fallback 为复制;也可显式加
"options": {"symlink": true}强制尝试 - 若想强制复制(如 CI 环境),可在本地包的
composer.json中加"options": {"symlink": false},或主项目全局配置"preferred-install": {"myorg/http-client": "dist"} -
composer install不会刷新已有链接的目标 —— 改了本地代码后,必须运行composer update myorg/http-client才会重建 symlink
团队协作与 CI 环境下的避坑点
path 仓库只应在本地开发时启用;CI/CD 流水线或部署环境必须移除它,否则因路径不存在导致构建失败。
- 推荐将
repositories块用环境变量控制,例如通过COMPOSER_REPOSITORIES注入,或使用composer config --unset repositories在 CI 脚本中动态清理 - 不要把绝对路径写死进
composer.json,否则换机器即失效;全部用相对于项目根目录的路径 - 若本地包自身有
autoload配置(如 PSR-4),确保其psr-4映射路径正确 —— 否则composer dump-autoload无法加载类,跟 symlink 无关 -
composer.lock会记录path包的当前解析结果,但该记录仅对当前机器有效;提交 lock 文件前建议先composer update --lock清理掉 path 相关元数据,或明确文档说明 lock 文件不适用于 CI

















