composer的path仓库url必须以./或../开头,仅支持相对路径,不解析~、$home、绝对路径及file://协议;本地包需含匹配name的composer.json、git初始化且require用dev-分支别名。

path仓库的url必须用./或../开头
Composer不解析~、$HOME、绝对路径,也不接受file://协议。它只认以./或../开头的相对路径——这是硬性规则,不是建议。
常见错误包括:"url": "my-package"(缺./前缀)、"url": "/home/user/pkg"(绝对路径)、"url": "~/pkg"(波浪号不展开)。这些写法都会导致Composer静默跳过该仓库,不报错也不提示。
正确写法示例:
-
"url": "./packages/utils"(同级目录) -
"url": "../shared-components"(上一级目录) - Windows下也一样:
"url": "../my-lib",不需要写C:/盘符——除非你用的是全局配置且跨项目引用,但那种场景极少见,且风险高
本地包根目录必须有合法composer.json且name严格匹配
路径写对了,但composer install仍报Could not find package xxx?大概率是本地包里缺composer.json,或其中name字段和你在主项目中require的不一致。
name必须完全匹配:大小写、vendor名、分隔符一个都不能错。比如你在主项目写"acme/utils": "dev-main",那本地包的composer.json里就得是"name": "acme/utils",不能是"acme/utils-dev"或"Acme/utils"。
其他要点:
- 本地包目录需已执行
git init并至少有一个commit,否则Composer拒绝识别 -
version字段可省略,但require时必须用dev-main、dev-develop这类分支别名,不能写1.0.0 - 不要把
repositories配置写在本地包自己的composer.json里——它只对自身生效,主项目看不到
项目级repositories必须写在根composer.json顶层
repositories不是extra字段的子项,也不是require的兄弟节点。它必须是项目根composer.json最外层的键,和其他字段如require、config平级。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
错误结构示例:{"extra": {"repositories": [...]}} 或 {"require": {...}, "repositories": {...}}(注意这里是对象而非数组)——这两种写法都无效。
正确结构必须是:
{
"repositories": [
{
"type": "path",
"url": "./packages/my-utils"
}
],
"require": {
"acme/utils": "dev-main"
}
}
即使只加一个仓库,也必须是数组形式;type必须是"path",不是"package"或"vcs"。
Windows下相对路径行为与Linux/macOS一致,但别混用盘符大小写
只要用./或../开头,Windows和Linux/macOS处理方式是一致的,不用额外加盘符。强行写C:/projects/my-pkg反而容易出问题:CI环境可能没C盘,或路径大小写敏感性不同。
真正要小心的是中文路径、空格、盘符大小写混用。比如C:\My Projects\pkg在某些PHP版本下会因空格或反斜杠解析失败。解决方案就一个:统一用./packages/my-utils,所有平台都稳。
顺带提醒:path仓库只适合开发联调,严禁进生产环境。部署时若误带type: path配置,上线后composer install会直接失败——因为路径根本不存在,Composer不会fallback,也不会报网络错误,而是安静地找不到包。










