必须在主项目composer.json的repositories中配置{"type":"path","url":"../my-package"}并添加"options":{"symlink":true},再执行composer update acme/utils;本地包需有合法composer.json且name与require一致,url用相对路径,版本用dev-main。

本地包的composer.json必须合法且name匹配
Composer 读取 path 仓库时,会直接解析本地目录下的 composer.json,而不是“猜”包名。如果该文件缺失、语法错误,或 name 字段(如 "acme/utils")与主项目 require 中写的不一致(大小写敏感、vendor 名拼错),Composer 就完全跳过这个源,且不报错——只默默去 Packagist 查找,最终报 Could not find package。
确保本地包根目录下有完整 composer.json,至少包含:
-
name:格式为"vendor/name",和require里完全一致 -
autoload:推荐用psr-4,例如{"Hoo\Tool\": "src/"} -
version可写"dev-main"(非必需,但建议),path 源下它实际被忽略,仅用于语义提示
主项目repositories配置必须是相对路径数组
不能把 repositories 塞进 require 或其他字段,也不能写成单个对象(不是数组)。它必须是项目根目录 composer.json 根级的数组,且 url 必须是相对于该文件的路径。
正确写法:
{
"repositories": [
{
"type": "path",
"url": "../my-local-package"
}
],
"require": {
"acme/utils": "dev-main"
}
}
常见错误:
- 用绝对路径(
"C:/dev/my-pkg"或/home/user/pkg)→ Windows 下极易静默失败 - 写成
"url": "~/my-pkg"或带环境变量 → Composer 不解析 shell 路径 - 漏掉方括号,写成
"repositories": { ... }→ JSON 解析失败或被忽略
启用 symlink 才能实时生效,且需手动 update
默认行为是复制(copy),改了本地包代码,vendor/acme/utils 里还是旧文件。必须显式启用符号链接,否则开发等于白忙。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
两种等效方式任选其一:
- 在主项目
repositories条目中加"options": {"symlink": true} - 在本地包自己的
composer.json里加同样字段
关键点:
- 改完配置后,必须运行
composer update acme/utils(不是dump-autoload,也不是install) - Linux/macOS 通常没问题;Windows 需开启“开发者模式”或以管理员权限运行命令行,否则
symlink创建失败且无提示 - 验证是否成功:
ls -la vendor/acme/utils应显示指向源目录的箭头;Windows 用dir vendorcmeutils看是否为“快捷方式”类型
require 版本必须用 dev-xxx,不能写稳定版号
path 类型仓库下,Composer 不读取本地包 composer.json 中的 version 字段,而是根据 Git HEAD 所在分支名来匹配。所以 require 里写 "1.0.0" 或 "*" 一定失败。
必须用分支名形式:
- Git 当前在
main分支 → 写"dev-main" - 在
develop分支 → 写"dev-develop" - 若
"minimum-stability": "dev"已设,可加@dev后缀,如"dev-main@dev"
执行命令示例:composer require acme/utils:dev-main。如果之前已 require 过,就用 composer update acme/utils 触发重链接。
最常被忽略的是:路径、name、版本三者必须严丝合缝,缺一不可;而 symlink 是否生效、Windows 权限、update 而非 install,这几个环节最容易卡住半天却找不到原因。










