本地包装不上主因是 Composer 未将其识别为合法包:需确保 composer.json 含正确 name、version,目录为 Git 仓库;repositories 配在项目根 composer.json 中且格式正确;require 使用 dev-分支名匹配;安装后 vendor 下为符号链接或复制目录。

本地包用 path 仓库类型配好了却装不上,大概率不是路径写错,而是 Composer 根本没把它当“合法包”处理——它连匹配步骤都没走完。
本地包的 composer.json 缺关键字段
Composer 不会扫描目录内容,只认你本地包根目录下那个 composer.json 文件是否满足最低契约。缺以下任一字段,composer require 就会静默跳过该 path 源:
-
name必须存在,且格式为vendor/name(全小写、单斜杠),和你在require里写的完全一致 -
version字段建议显式写,如"dev-main"或"1.0.x-dev";若为空或非法值(如"latest"),Composer 可能拒绝加载 - 目录必须是 Git 仓库:运行过
git init,且至少有一个 commit;否则 Composer 报Could not load package xxx: no matching package found
repositories 配置位置或格式错误
这个配置必须写在项目根目录的 composer.json里,不能写在全局 config 或本地包自己的 composer.json 中:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 键名必须是
repositories(复数),不是repository或repos -
type值必须是"path",不能漏、不能拼错 -
url支持相对路径(如"./packages/my-lib"),但不能含~、环境变量或 Windows 的%USERPROFILE% - Windows 下路径分隔符建议统一用正斜杠
/,避免双反斜杠转义问题
require 版本约束不匹配 path 行为
path 类型仓库不按 version 字段匹配,而是靠分支名或 Git HEAD 解析。所以版本写法必须符合它的规则:
- 不要写
"^1.0"、"*"或留空——这些在path源下无效 - 必须用
"dev-main"、"dev-develop"等实际存在的分支名(大小写敏感) - 如果本地包默认分支是
master,就得写"dev-master",而不是假设它是main - 若项目中设了
"minimum-stability": "dev",还需加@dev后缀,例如"myorg/lib": "dev-main@dev"
安装后 vendor/ 里没文件?其实是符号链接
执行 composer install 或 composer require 成功后,vendor/vendor/name 是个符号链接(Linux/macOS)或复制目录(Windows),不是普通文件夹:
- Linux/macOS 下运行
ls -l vendor/myorg/lib,看到->指向你配置的url路径,说明成功 - Windows 下默认是复制行为,若想强制软链需开启开发者模式并加
"options": {"symlink": true} - 如果
vendor/里压根没对应目录,先确认是否执行了composer update myorg/lib(不是全量update),因为path包不会被install自动拉取,除非已出现在composer.lock中
最常被忽略的是:改完 repositories 或本地包 composer.json 后,不删 composer.lock 就直接 install——lock 文件里还记着旧源地址,Composer 会照着它硬找,根本不会重新解析你的新 path 配置。

















