path仓库必须写在项目根composer.json的repositories数组中,type为"path",url为相对路径(如"./packages/my-utils"),且本地包需含合法composer.json、已git init并有commit;require中包名须与本地composer.json的name严格一致,更新代码后须运行composer update vendor/name而非install。

path仓库配置必须写在项目根composer.json的repositories数组里
不写在这里,Composer就当它不存在。常见错误是把repositories塞进require、config或子目录的composer.json里——全都不生效。
必须用数组格式,哪怕只配一个源:
{
"repositories": [
{
"type": "path",
"url": "./packages/my-utils"
}
],
"require": {
"myorg/utils": "*"
}
}
-
url必须是相对路径(从当前composer.json位置算起),不能用~/、$HOME/或绝对路径(如/Users/me/pkg),否则换机器或CI环境直接静默失效 -
url指向的是**含composer.json的目录本身**,不是它的父目录,也不是src/子目录 - 本地包目录下必须有合法
composer.json,至少包含name和autoload(哪怕空对象),缺任一字段,Composer会跳过该仓库且不报错
本地包的name、version、Git状态三者要对齐
Composer识别path包不靠文件名或目录名,只认composer.json里的name,且必须和require中写的完全一致(包括大小写、vendor前缀)。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 若本地包
composer.json中写"name": "myorg/utils",项目里就必须写"myorg/utils": "dev-main",写"myorg/utils": "*"也行,但"1.0.0"大概率失败——path类型默认忽略version字段,只按Git分支或HEAD解析 - 本地包目录必须已执行过
git init并至少有一个commit,否则Composer拒绝加载(报Could not find a matching version) - 如果本地包默认分支是
develop而非main,require就得对应写"dev-develop",否则链接失败
符号链接不是默认开启的,得靠options或全局配置
很多人以为composer install后看到vendor/myorg/utils是个文件夹,就以为没连上——其实它可能已经是软链了,只是没显式启用symlink选项。
- Linux/macOS下默认创建符号链接,但前提是本地包
composer.json里写了"options": {"symlink": true},或者全局执行过composer config --global path.repo.symlink true - Windows需管理员权限或启用开发者模式才能创建软链;否则默认行为是复制文件,改本地代码不会实时生效
- 确认是否真链接成功:
ls -la vendor/myorg/utils(Linux/macOS)或dir vendor\myorg\utils(Windows),输出含->或<symlink></symlink>才表示链接有效 - 想强制复制(比如CI环境):在项目
composer.json的config里加"preferred-install": {"myorg/utils": "dist"}
改了本地代码,必须运行composer update vendor/name
composer install只重建缺失的链接,不会刷新已有链接的目标路径。这是最容易被忽略的一点。
- 你改完
./packages/my-utils/src/Helper.php,主项目里没反应?不是autoload没刷,也不是缓存问题,而是链接根本没更新 - 必须执行
composer update myorg/utils(指定包名),而不是composer install或全量composer update -
composer update无参数会重算所有依赖,慢且可能意外升级其他包;指定包名更快、更安全,也符合本地开发聚焦单点的节奏 - CI/CD环境严禁保留
repositories中的path条目——上线前必须移除,否则构建必然失败
composer.json在开发、测试、生产三套环境中自动适配:path仓库只该存在于开发机,但又不能手动删改再提交。这需要借助构建脚本、环境变量或Studio这类工具动态注入,而不是硬编码进版本库。










