答案是:必须同时满足type为"path"、url为合法本地绝对路径(不含~、./,末尾无/)、目标目录下有语法正确的composer.json;缺一即静默失效。

能用 path 类型引入本地依赖,但必须同时满足三个硬性条件:仓库 type 是 "path"、url 是合法本地绝对路径(不含 ~、不含 ./、末尾不能有 /)、目标目录下存在语法正确的 composer.json。少一个,Composer 就静默跳过,连报错都没有。
为什么 composer config repositories.xxx path ./pkg 不生效
这条命令看似执行成功,但实际不会写入配置——因为 path 类型仓库不接受相对路径或波浪号缩写。
-
url必须是绝对路径,例如/home/user/my-pkg,不能是./my-pkg或~/my-pkg - 路径末尾加
/会直接失效:/home/user/my-pkg/❌,/home/user/my-pkg✅ - 推荐用
realpath安全转义:composer config repositories.mypkg path "$(realpath ./my-pkg)" - 验证是否写入成功:
cat ~/.composer/config.json | grep -A2 mypkg,确认输出含"type": "path"和完整绝对路径
为什么 require 后提示 Could not find package vendor/name
不是 Composer 找不到仓库,而是包名或路径没对齐——path 仓库本身不校验 name,只负责“提供源”,真正匹配靠的是 require 字符串和本地包 composer.json 中的 name 字段。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 本地包根目录下的
composer.json必须包含"name": "vendor/name",大小写、分隔符(仅限短横线-)必须逐字一致 -
url指向的是“含composer.json的目录”,不是文件,也不是子目录 - Windows 用户注意:路径含中文或空格时,某些 PHP 版本解析失败且无提示;建议路径纯英文、无空格
- 执行
composer show --all | grep vendor/name,如果完全不出现,说明仓库未加载或 name 不匹配
怎么让改本地代码立刻在项目里生效
默认行为是复制(copy),不是软链(symlink)。你改了 ../my-pkg/src/Helper.php,但 vendor/vendor/name/src/Helper.php 还是旧的——这不是缓存问题,是设计如此。
- 启用 symlink 的关键不在主项目配置,而在**本地包自己的
composer.json** 中声明:"options": {"symlink": true} - 这个字段必须写在本地包的
composer.json里,不是主项目的repositories配置里 - Linux/macOS 验证:
ls -la vendor/vendor/name,看到箭头指向源路径才算成功;Windows 用dir vendorendor ame看是否为JUNCTION - Docker 场景需加
--cap-add=SYS_ADMIN,且宿主机挂载方式要支持 symlink;Windows 则必须以管理员身份运行终端
autoload 不生效?别只盯 composer.json 的 autoload 字段
本地包的类能被 new 或 use,前提是它的自动加载映射被主项目识别并注册——这一步不是自动完成的。
- 本地包
composer.json中的autoload(如"psr-4": {"Vendor\Pkg\": "src/"})只是声明,主项目不会自动合并这些规则 - 必须手动触发重生成:
composer dump-autoload -o(加-o强制优化,避免 dev autoload 干扰) - IDE(如 PhpStorm)断点不命中?检查 IDE 中配置的路径是否和磁盘真实路径一致,特别是 Docker 或 WSL 下的路径映射
- 如果本地包用了
autoload-dev,主项目默认不加载;测试时需额外require或在主项目中补全映射
最常被忽略的其实是本地包自身的 composer.json:它不仅要存在,还要有正确 name、合法 JSON 语法、以及明确的 options 和 autoload 声明。主项目配得再对,本地包这层塌了,整个 path 依赖就只是个摆设。










