Composer本地仓库配置必须满足三要素:repositories须置于主项目composer.json根层级;path类型url为相对目录路径且含合法composer.json;本地包name/version须与require严格一致,并显式启用symlink。

Composer 仓库访问路径不是“配一个 URL 就能用”,关键在于 repositories 字段的写法、位置和内容是否满足 Composer 的硬性校验规则——错一个字段或放错一层,就会静默失效,报 Could not find package。
repositories 必须写在主项目 composer.json 根层级
它不能嵌套在 config、extra、require 或任何子对象里,必须是顶层数组。常见错误是把它塞进本地包自己的 composer.json,那完全没用——Composer 只读主项目的配置。
- ✅ 正确位置:
composer.json文件最外层,与require同级 - ❌ 错误写法:
"config": { "repositories": [...] }或"require": { "...": "...", "repositories": [...] } - ⚠️ 验证方式:运行
composer config repositories,输出应为非空数组;若为空,说明配置未被识别
path 类型仓库的 url 必须是相对路径,且指向目录而非文件
url 值必须是相对于主项目 composer.json 所在目录的路径,且必须指向一个**含合法 composer.json 的目录**,不能是文件路径(如 ./packages/my-lib/composer.json)。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- ✅ 推荐写法:
"url": "../my-local-package"或"url": "packages/utils" - ❌ 禁止写法:
"url": "/home/user/pkg"(绝对路径 CI 失效)、"url": "./pkg"(部分版本不识别)、"url": "$HOME/pkg"(环境变量不展开) - ⚠️ Windows 用户注意:路径中避免中文、空格、盘符大小写混用;反斜杠
\可能导致静默失败,统一用正斜杠/
本地包的 name 和 version 必须与 require 完全匹配
Composer 不看目录名、不猜包名,只严格比对本地包 composer.json 中的 name 字段,且大小写、分隔符(仅允许短横线 -)全部逐字一致。
- ✅ 本地包
composer.json必须含:"name": "acme/utils"、"version": "dev-main"(或"1.0.x-dev") - ✅ 主项目
require中对应写:"acme/utils": "dev-main"(若minimum-stability为dev,需加@dev后缀) - ❌ 常见不匹配:
"acme/utils"vs"Acme/utils"、"acme_utils"、"acme/utils-dev" - ⚠️
path类型不支持版本别名解析:即使本地包写了"version": "dev-main",composer require acme/utils:dev-main仍会跳过 path 源去 Packagist 查——必须用@dev或稳定开发版约束
启用 symlink 需显式配置 options 并执行 update
默认 path 仓库行为是复制(copy),改本地代码不会同步到 vendor。要实时生效,必须启用符号链接,并触发重建。
- ✅ 在主项目
repositories条目中加:"options": {"symlink": true} - ✅ 执行:
composer update acme/utils(不是install或dump-autoload) - ✅ 验证:
ls -la vendor/acme/utils应显示指向源目录的箭头;Windows 下用dir vendor\acme\utils看是否为“快捷方式” - ⚠️ Windows 需开启“开发者模式”或以管理员权限运行命令行,否则
symlink创建失败且无提示
真正卡住人的往往不是语法,而是路径相对于谁、name 对不对得上、symlink 是不是真建成了——这三处任一出错,composer update 都不会报错,但 vendor 里就是没东西,或者内容没更新。

















