必须在主项目composer.json根级repositories数组中配置path源,url用相对或绝对路径指向含合法composer.json的目录,name与require严格一致且为vendor/name格式,版本用dev-main,本地包需git init并有commit,启用symlink需显式加options字段并运行composer update包名。

本地开发扩展包时,不配 repositories 就根本装不上——Composer 不会自动扫描相邻目录,require 字段只声明“要谁”,不负责“去哪找”。
path 仓库必须写在主项目 composer.json 的 repositories 数组里
很多人把 repositories 塞进 require、config 或 extra 字段,结果完全不生效。Composer 只认根级 repositories 数组,且必须是合法 JSON 数组结构。
- 正确写法:
"repositories": [{"type": "path", "url": "./packages/my-utils"}](哪怕只有一个源,也得是数组) -
url必须用相对路径(如"./packages/my-utils")或绝对路径(如/home/user/my-utils),禁用file://、~/、$HOME等写法 - Windows 下统一用
/作分隔符更稳妥,避免\被转义问题 - 执行
composer config --list后应能看到你配的源;看不到 = 配置没被加载
本地包的 composer.json 必须有合法 name 和 version
Composer 扫描 path 仓库时,会逐个读取目标目录下的 composer.json。只要语法错误、缺 name、或 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-master",方便require时对齐 - 本地包目录必须已执行过
git init并至少有一个commit,否则 Composer 拒绝识别该路径 - 常见错误现象:改完代码运行
composer update acme/my-utils,vendor 里还是旧版本——大概率是本地包name写成了my-utils,而项目require里写的是acme/my-utils
require 时必须用 dev-分支名,不能用版本约束
path 仓库下的包,Composer 默认忽略 version 字段,只按 Git HEAD 所在分支解析。如果你本地包在 main 分支,但项目 require 写的是 "acme/my-utils": "^1.0",就会失败。
- 必须显式写成:
"acme/my-utils": "dev-main"(或"dev-develop"等实际分支名) - 不要用
*,它在 path 源下会被解释为“任意稳定版”,而本地包没有 tag,自然找不到 - 执行更新优先用
composer update acme/my-utils,避免全量update触发其他依赖意外升级 - 验证是否成功:Linux/macOS 运行
ls -la vendor/acme/my-utils,应看到->指向源目录;Windows 运行dir vendor\acme\my-utils,应显示为“快捷方式”类型
改完本地包代码后如何立刻生效
默认行为是创建符号链接(symlink),但前提是显式启用且系统支持。复制(copy)模式下改代码完全无效。
- 关键操作:在
repositories条目中加"options": {"symlink": true} - Linux/macOS 默认开启 symlink,但 Windows 必须显式写且启用开发者模式或以管理员权限运行命令行
- 执行
composer update acme/my-utils,不是install也不是dump-autoload;install只重建缺失链接,不会刷新已有链接的目标 - 如果想强制复制(例如 CI 环境),可设
"preferred-install": {"acme/my-utils": "dist"}或"options": {"symlink": false}
最容易被忽略的一点:所有配置都对齐之后,仍可能因 Windows 权限、Git 状态(未 commit)、或路径中存在空格/中文导致静默失败——建议先在 Linux/macOS 环境验证逻辑通路,再回 Windows 补权限和路径细节。










