path仓库必须写在项目composer.json根级repositories数组中,且type为"path"、url为相对路径;本地包需有合法name和version,autoload配置须与文件结构一致,否则类加载失败。

path仓库必须写在项目composer.json的根级repositories数组里
Composer 不会从 require 字段、extra 字段或子配置里读取 path 仓库。你必须把 repositories 放在项目 composer.json 的最外层,和 require、autoload 同级:
{
"repositories": [
{
"type": "path",
"url": "./packages/my-utils"
}
],
"require": {
"mycompany/utils": "*"
}
}
常见错误包括:
- 把
repositories塞进extra或config里 → 静默忽略 - 写成
"repositories": { "type": ... }(对象而非数组)→ 解析失败,composer validate会报错 - 路径用了绝对路径(如
/home/user/packages/my-utils)→ 换机器或 CI 就失效,且 Windows 下常静默跳过
本地包的composer.json必须有合法name和version
Composer 扫描 path 仓库时,只认目录下存在且语法正确的 composer.json,且至少包含 name 和 version(或满足稳定性策略的分支名):
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
name必须和你在composer require时写的完全一致(大小写敏感),例如mycompany/utils -
version可以是"dev-main"、"1.0.x-dev"或"0.1.0";若不写version,项目需设"minimum-stability": "dev",否则dev-main这类会被过滤掉 - 如果本地包
composer.json有语法错误(比如多了一个逗号),Composer 会跳过整个目录,不提示也不报错
执行composer require后没装进vendor?检查这三件事
现象是运行 composer require mycompany/utils 后,vendor/mycompany/utils 不存在,composer.json 的 require 也没新增 —— 这不是缓存问题,而是前置条件未满足:
- 确认已运行
composer update或composer install(仅require命令不会自动触发安装,除非加--update-with-dependencies) - 检查
url路径是否真实存在,且该目录下有composer.json;空目录或路径拼错(如./pakcages/)会导致“找不到包” - 别在子目录(如
app/或src/)里执行命令 —— 必须在项目根目录(含composer.json的地方)
装上了但Class not found?autoload和dump-autoload才是关键
90% 的 “类找不到” 和 path 本身无关,而是自动加载没注册进去:
- 确保本地包的
composer.json里有正确autoload配置,例如:"psr-4": {"MyCompany\Utils\": "src/"} - 改完本地包或项目配置后,必须手动运行
composer dump-autoload(开发阶段不用加-o) - 如果是 Laravel 包,且提供了
ServiceProvider,它不会被自动注册 —— 仍需手动加到config/app.php的providers数组里 - 别在
require 'vendor/autoload.php'之前就 new 类,也别用include直接引入 src 文件 —— 这绕过了 Composer 的自动加载机制
autoload 配置,然后反复跑 dump-autoload 也没用——得先让那个 composer.json 里的映射对上真实路径。

















