本地开发必须在项目根composer.json中显式配置path仓库,url用相对路径;本地包需含合法vendor/name格式name、dev-分支名require、已git init并提交;autoload需正确配置并执行dump-autoload。

本地开发必须用 path 仓库,且配置只生效于项目根 composer.json
Composer 不会自动扫描同级目录下的包,也不认 require 或 config 字段里的 repositories。必须在项目根目录的 composer.json 中显式声明:
-
repositories是顶层数组,哪怕只有一个源也要写成[{ "type": "path", "url": "./packages/my-utils" }] -
url必须是相对路径(如"./packages/my-utils"),禁用file://、~/、$HOME或绝对路径(/home/xxx或C:/xxx在 CI/CD 中大概率静默失败) - Windows 下统一用
/分隔符,避免引发 JSON 解析或路径拼接异常
本地包的 composer.json 必须含合法 name 和显式 version
Composer 扫描 path 目录时,只要 composer.json 缺 name、格式错误(如 "my-utils" 而非 "acme/my-utils")、或 name 里没斜杠,就直接跳过——不报错、不提示、不加载。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
name必须为vendor/name格式(如"acme/my-utils"),大小写敏感,且与require中写的完全一致 -
version非必需,但强烈建议设为"dev-main"或"dev-develop",否则require时若没配"minimum-stability": "dev",会被稳定性策略过滤掉 - 本地包目录必须已执行
git init并至少有一个 commit;无 Git 仓库的路径,Composer 拒绝识别
require 时必须用 dev-分支名,不能用 * 或 ^
Path 仓库下,Composer 忽略 version 字段,只按当前 Git HEAD 所在分支解析版本。写错约束就会报 Could not find a matching version of package acme/my-utils,哪怕包就在隔壁文件夹。
- 必须写
"acme/my-utils": "dev-main"(分支名需与本地 Git 分支名一致) - 禁用
"*":它被解释为“任意稳定版”,而本地包无 tag,必然失败 - 禁用
"^1.0"或"~2.0":这些是语义化版本约束,对 path 源无效 - 更新时优先执行
composer update acme/my-utils,避免全量update触发其他依赖意外升级
自动加载失效?90% 是 autoload 配置或未刷新加载器
装上包却报 Class not found,和 Composer 是否加载成功无关,而是命名空间注册问题。
- 确认本地包的
composer.json含正确autoload,如"psr-4": {"Acme\MyUtils\": "src/"} - 运行
composer dump-autoload(开发阶段不用加-o)才能让新命名空间生效 - 若包提供 Laravel Service Provider 或 Facade,必须手动在
config/app.php的providers或aliases中注册 - 别在
require 'vendor/autoload.php'前就 new 类,也别用include或require_once手动引入类文件
git add && git commit,导致 composer update 拉的仍是旧 commit —— Composer 只认 Git HEAD,不是文件内容。

















