Composer默认拒绝安装dev-main,因其稳定性为dev级而项目minimum-stability默认为stable,需显式设"minimum-stability": "dev"并配置path repository及autoload。

为什么 dev-main 会被拒绝安装
Composer 默认按稳定性(stability)过滤分支名,dev-main、dev-develop 这类名称自带 dev 前缀,属于开发版,而项目默认只允许 stable 级别包。不显式放宽限制,composer require vendor/package:dev-main 会静默失败或报 Could not find package —— 实际不是找不到路径,是被稳定性策略筛掉了。
必须设 minimum-stability 为 dev
在主项目根目录的 composer.json 中,minimum-stability 必须设为 "dev",且建议同时加 "prefer-stable": true 防止意外拉取不稳定的依赖:
{
"minimum-stability": "dev",
"prefer-stable": true,
"require": {
"mycompany/utils": "dev-main"
}
}
-
minimum-stability是全局开关,不设它,任何dev-*分支名都进不了解析流程 -
prefer-stable不影响本地path仓库,但能避免其他远程包误装dev版本 - 该配置必须写在根级,不能嵌套在
config或extra里
repositories 类型必须是 path,且路径要对
仅靠 minimum-stability 不够,还得让 Composer 知道去哪找这个 dev-main。关键在 repositories 数组:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 必须写在主项目
composer.json根级,类型为"type": "path" -
url是相对路径,比如"./packages/my-utils";Windows 下若跨盘符,得写绝对路径如"C:/work/my-utils" - 本地包自己的
composer.json中name字段必须和require里完全一致(大小写、连字符、斜杠都不能错) - 本地目录必须已执行
git init && git commit,否则 Composer 拒绝识别
装完后还要手动刷新 autoload
即使 composer require 成功,new MyCompanyUtilsClient() 仍可能报 Class not found。这不是 Composer 没装上,而是本地包的自动加载没注册进去:
- 检查本地包
composer.json是否有autoload段,例如:"psr-4": {"MyCompany\Utils\": "src/"} - 确认
src/Client.php文件存在,且命名空间与路径匹配 - 改完本地包的
autoload或新增类后,必须在主项目根目录运行:composer dump-autoload - 别指望
composer update自动触发 autoload 更新——它只管依赖图,不管 autoloader 注册
最常被忽略的是:改了本地包的 composer.json 后,既没跑 dump-autoload,也没验证符号链接是否真实建立。Linux/macOS 上用 readlink vendor/mycompany/utils,Windows 上用 dir vendormycompanyutils,看到指向源目录才算真正生效。

















