path仓库的url必须是相对路径,不能带file://或绝对路径;需写成"./packages/my-utils",且本地包composer.json中name字段须与require完全一致(大小写敏感),repositories须置于项目composer.json根级数组中。

path仓库的url必须是相对路径,不能带file://或绝对路径
Composer 的 path 类型仓库只认相对于项目根目录的路径,写成 "./packages/my-utils" 才有效;写成 "file:///home/user/project/packages/my-utils" 或 "/home/user/project/packages/my-utils" 会静默跳过,不报错也不提示。
常见错误包括:
- 用 IDE 自动生成的绝对路径粘贴进去(尤其 Windows 下的
C:\xxx) - 误加
file://前缀,以为这是“标准 URL” - 路径开头多了斜杠,比如
"/packages/my-utils"(应为"./packages/my-utils")
验证方式:在项目根目录执行 ls -la ./packages/my-utils,能列出内容才算路径可达。
本地包的composer.json必须合法且 name 字段严格匹配
composer require 查找的是本地包 composer.json 里的 name 字段,不是目录名、文件名或 Git 仓库名。两者必须完全一致(大小写敏感、无空格、无额外前缀)。
例如本地包 ./packages/my-utils/composer.json 写着:
{"name": "acme/utils", "version": "dev-main"}
那你就必须运行:
composer require acme/utils:dev-main
以下写法都会失败:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
composer require Acme/utils(大小写错) -
composer require utils(缺 vendor 段) -
composer require acme/utils:main(没加dev-前缀,被稳定性策略过滤)
repositories 必须写在项目 composer.json 根级,且格式为数组
配置不在根级 repositories 数组里,就等于没写。不能塞进 config、extra 或 require 里,也不能写成对象({})而非数组([])。
正确写法示例:
{
"repositories": [
{
"type": "path",
"url": "./packages/my-utils"
}
],
"require": {
"acme/utils": "dev-main"
}
}
注意点:
- 哪怕只配一个 path 仓库,也必须是数组形式,不能省略方括号
-
type必须是"path",写成"package"或留空会直接忽略 - 如果本地包目录下没有
composer.json,或该文件语法错误、缺name,Composer 会跳过这个仓库,不提示
软链接需显式启用,且仅对 composer update 生效
默认情况下,Composer 对 path 类型仓库是复制文件到 vendor/,不是创建符号链接。要启用软链接,必须在本地包的 composer.json 中加:
"options": {"symlink": true}
或者全局配置(不推荐):
composer config --global preferred-install "source"
但要注意:
- 软链接只在
composer update时生效,composer install仍走复制逻辑 - 启用 symlink 后,修改本地包代码可实时反映到项目中,适合模块开发调试
- CI 环境通常禁用 symlink(权限/挂载限制),上线前务必确认是否符合部署要求
最易被忽略的一点:path 仓库不会自动触发 autoload 更新——改完 composer.json 后,必须手动运行 composer dump-autoload,否则新声明的 autoload.files 或 PSR-4 映射不会加载。










