必须将 type: "path" 源置于 repositories 数组首位,否则 composer 会短路匹配首个返回 200 的远程源(如镜像或 packagist),跳过后续所有源;本地包需路径正确、含合法 composer.json(name 与 require 严格一致)、git 初始化,且 require 版本必须为 dev-main 等分支名,执行 composer update 包名而非全量更新,并运行 dump-autoload。

必须把 type: "path" 源放在 repositories 数组最前面,否则本地包会被镜像或 Packagist 覆盖——这不是“优先级设置”,是硬性短路匹配逻辑。
为什么本地包总是被远程源抢走?
Composer 查找包时,从 repositories 数组第一个元素开始发请求,只要某个源返回 HTTP 200 + 含目标包元数据的 JSON,就立刻锁定使用,后续所有源(包括你配的 path)彻底跳过。常见错误包括:
- 把阿里云镜像写在第一位,但没禁用
packagist.org→ 新包未同步时触发 fallback,本地包根本没机会被扫描 -
path源写在数组中间或末尾 → 即使路径正确、composer.json合法,也永远不会被访问 - 误以为
vcs源能覆盖同名包 → 它只响应显式composer require vendor/name调用,不参与全局元数据匹配
怎么写 repositories 才让本地包真正生效?
项目根目录 composer.json 的 repositories 必须是数组,且 type: "path" 对象排第一;路径用相对路径(如 "./packages/my-utils"),不能带 file:// 或 ~;本地包目录下必须有合法 composer.json,其中 name 字段要和 require 中写的完全一致。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 正确结构示例:
{ "repositories": [ { "type": "path", "url": "./packages/my-utils" }, { "type": "composer", "url": "https://mirrors.aliyun.com/composer/" }, { "packagist.org": false } ], "require": { "myorg/utils": "dev-main" } } -
packagist.org: false必须是独立对象、位于数组末尾,键名不能拼错 - 执行
composer config repositories验证:输出中不应出现https://repo.packagist.org,且type: "path"应排在首位
composer require 本地包时版本号怎么填?
不要写 "*"、"^1.0" 或留空——path 源下的包默认只认 dev- 开头的分支名,比如 dev-main、dev-develop。它忽略本地包 composer.json 中的 version 字段,只按 Git 当前 HEAD 解析。
- 本地包用的是
main分支 →require写"myorg/utils": "dev-main" - 本地包默认分支是
develop→require必须同步改成"dev-develop" - 若本地包未初始化 Git(
git init+ 至少一个 commit),Composer 会静默跳过该路径,不报错也不提示 - 执行
composer update myorg/utils,而非全量update,避免意外刷新其他依赖
装上了但 Class not found 怎么办?
90% 是 autoload 配置或加载时机问题,和仓库顺序无关:
- 确认本地包
composer.json中autoload正确,例如:"psr-4": {"MyOrg\Utils\": "src/"} - 运行
composer dump-autoload(开发阶段不用加-o),否则新命名空间不会注册进自动加载器 - 如果包提供 Laravel Service Provider,必须手动在
config/app.php的providers里注册——Composer 不处理这部分 - 符号链接是否创建成功?Linux/macOS 下
ls -l vendor/myorg/utils应显示-> ../packages/my-utils;Windows 若未启用开发者模式或非管理员权限,可能退化为复制,需检查options: {"symlink": true}
最容易被忽略的是:一旦配置了项目级 repositories,全局配置(~/.composer/config.json)将被完全忽略——别在全局配了镜像却指望它和本地路径共存。










