必须用dev-main等分支名而非version字段,因path源下composer只认git分支名;需在主项目repositories中配置path源并设"options":{"symlink":true},再执行composer update vendor/name生效。

path仓库不认version字段,只认分支名
本地包的composer.json里写的"version": "1.2.3"在path类型下完全被忽略。Composer只看Git当前HEAD所在的分支名(比如main、develop),然后要求你在主项目require里用对应分支别名,例如"acme/utils": "dev-main"。写"acme/utils": "1.2.3"必然失败——不是找不到包,是根本不会匹配到这个path源。
常见错误现象:Could not find a matching version of package acme/utils,但目录明明存在、name也对。原因就是版本约束用了tag或数字,而不是dev-前缀的分支名。
- 必须用
dev-main、dev-develop、dev-feature/login这类格式 - 如果本地包没初始化Git,Composer会报错或退回到
master分支逻辑,行为不可靠 - 分支名大小写敏感,
Dev-Main≠dev-main
require里不能写路径,必须走repositories+require两步
composer require acme/utils:dev-main能成功,前提是主项目composer.json的repositories里已声明该path源。它不是“从路径安装”,而是“告诉Composer:这个包名,去这个本地目录找”。漏掉repositories配置,哪怕路径就在旁边,也会报Could not find package。
错误写法示例(直接挂掉):"acme/utils": "./packages/utils" 或 "acme/utils": "../utils" —— require字段只接受vendor/name:version,不支持路径字符串。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
repositories必须写在主项目(你正在运行composer命令的那个项目)的composer.json中 -
url推荐用相对路径,如"../my-package";绝对路径在Windows上易因盘符、空格、反斜杠静默失败 - 本地包目录下必须有合法
composer.json,且name与require中完全一致(包括大小写)
symlink必须显式开启,否则改代码不生效
默认情况下,Composer对path包执行的是复制(copy),不是符号链接(symlink)。你改了../my-package/src/Helper.php,vendor/acme/utils/src/Helper.php还是旧文件——这是最常被卡住的点。
解决方法是在repositories条目里加"options": {"symlink": true}:
{
"repositories": [
{
"type": "path",
"url": "../my-package",
"options": {
"symlink": true
}
}
]
}
- 执行
composer update acme/utils才会重建symlink(不是dump-autoload) - Linux/macOS下
ls -la vendor/acme/utils应显示箭头指向源目录 - Windows需开启“开发者模式”或以管理员权限运行命令行,否则
symlink创建失败且无提示
为什么dev-main有时装不上?检查PHP平台兼容性
即使repositories和require都对,composer require acme/utils:dev-main仍可能失败,错误信息类似Your requirements could not be resolved。这时候不是路径或版本问题,而是PHP版本不匹配。
本地包composer.json里可能写了"require": {"php": "^8.2"},而你本地PHP是8.1——Composer会在解析时直接拒绝匹配,连path目录都不会进去读。
- 用
composer show acme/utils --all看不到任何版本?先检查php --version是否满足本地包的require.php - 临时绕过:加
--ignore-platform-req=php,但仅限调试,勿提交 - CI环境尤其要注意:Docker镜像PHP版本、本地开发PHP版本、
config.platform.php三者要对齐
dev-main生效,以及Windows下没开开发者模式却硬要symlink。这两处不处理,其他全对也没用。










