直接用repositories+type:"path"就能生效,但90%失败因name、路径、权限未对齐:name须大小写及分隔符完全一致;路径须相对主项目且不带尾斜杠;本地包composer.json需合法且含name字段。

直接用 repositories + type: "path" 就能生效,但 90% 的失败不是配置写错,而是 name、路径、权限三处没对齐。
本地包的 composer.json 必须有合法 name 字段
Composer 不会猜测包名,它严格比对 require 中写的字符串和本地包 composer.json 里的 name 值。大小写、分隔符(只允许短横线 -)、vendor 名,必须逐字一致。
-
"acme/utils"≠"Acme/utils"≠"acme_utils"≠"acme/utils-dev" - 路径末尾不能带
/,"url": "../my-pkg/"会被静默忽略整个仓库 - 确保本地包根目录下存在语法正确的
composer.json:无尾逗号、全双引号、JSON 格式有效 - Windows 下避免路径含中文或空格,某些 PHP 版本解析会失败
repositories 配置必须写在主项目 composer.json 顶层
这个配置不是加在 extra 或 config 里,而是直接放在 composer.json 最外层对象中,和 require 同级:
{
"name": "my/project",
"repositories": [
{
"type": "path",
"url": "../my-pkg"
}
],
"require": {
"acme/utils": "@dev"
}
}
注意:url 是相对于主项目 composer.json 的路径,不是 shell 当前工作目录;@dev 是必需的,因为本地包没有版本标签,只能用开发分支别名。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
符号链接(symlink)不生效?检查本地包自己的 options
默认行为是尝试创建 symlink,但失败时会静默 fallback 到 copy —— 这意味着你改了本地代码,vendor/ 里还是旧副本,调试完全失效。
- 关键不在主项目配什么,而在本地包自己的
composer.json是否包含:"options": {"symlink": true} - Windows 用户必须以管理员身份运行终端,否则 symlink 创建失败且无提示
- Docker 容器需加
--cap-add=SYS_ADMIN,且挂载方式要支持 symlink(如-v $(pwd)/../my-pkg:/workspace/my-pkg) - 验证是否真用了 symlink:
ls -la vendor/acme/utils(Linux/macOS)或dir vendor\acme\utils(Windows),看到箭头或JUNCTION才算成功
autoload 不生效?手动触发 dump-autoload
即使 symlink 成功、包也装进 vendor,类仍可能报 Class not found —— 因为 Composer 没把本地包的自动加载规则注入到主项目的映射中。
- 运行
composer dump-autoload -o强制重生成优化后的 autoload map - 如果本地包用了 PSR-4,确认其
composer.json中autoload段正确声明了命名空间与路径映射 - IDE 路径映射需同步更新:比如 PhpStorm 要把
../my-pkg/src加入源根,否则跳转和补全会断
最常被忽略的是:symlink 和 autoload 是两套独立机制,一个成功不代表另一个自动就位;每次改完本地包结构或命名空间,都得重新 dump。










