composer path仓库默认不识别dev-main,因启用symlink模式且跳过版本发现逻辑,需同时在本地包composer.json中设"version":"dev-main"并在根项目repositories中配置"options":{"symlink":false}。

Composer path仓库为什么默认不识别 dev-main
因为 path 仓库类型默认启用 symlink 模式,且 Composer 会跳过版本发现逻辑——它直接读取目标目录的 composer.json 中的 "version" 字段,若该字段缺失或不是合法版本格式(如 "dev-main"),就当作无版本处理,require 时无法匹配 "dev-main"。
必须显式设置 version 并禁用 symlink
两个动作缺一不可:
- 在本地包的
composer.json中,明确写入"version": "dev-main"(不能只靠分支名推断) - 在根项目的
composer.json的repositories配置中,为该path仓库添加"options": {"symlink": false}
否则即使写了 version,Composer 在 symlink 模式下仍可能忽略它;而只关 symlink 不设 version,则根本没版本可识别。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
{
"repositories": [
{
"type": "path",
"url": "../my-local-package",
"options": {
"symlink": false
}
}
]
}
require 时必须用 dev-main,不能省略 dev- 前缀
即使 composer.json 里写的是 "version": "dev-main",也必须在 require 中显式写成 "my/package": "dev-main"。以下写法均无效:
-
"my/package": "main"—— Composer 不会自动补dev- -
"my/package": "*"——path仓库不参与版本排序,*通常匹配不到 -
"my/package": "dev-main as 1.0.0"——as重写只对 VCS 有效,path不支持
验证是否生效的最快方式
执行 composer show my/package,输出中应包含 versions : dev-main;若显示 versions : * No version set (parsed as 1.0.0),说明 version 字段未被读取或格式错误。
常见漏点:本地包的 composer.json 放在子目录(如 src/composer.json),但 path 指向的是父目录——Composer 只认根级 composer.json。










