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

怎么配 repositories 才让 path 仓库生效
必须在项目根目录的 composer.json 中,于根级 repositories 字段里声明一个 type: "path" 的条目,且 url 是相对于该 composer.json 的路径(如 "../my-local-package" 或 "./packages/utils")。
常见失效原因:
-
url写成绝对路径(/home/user/pkg)或带file://前缀 —— 多数场景下静默跳过 - 把配置错放到
require、config或子对象里,而不是repositories数组顶层 - 本地包目录下没有
composer.json,或其中缺name字段(大小写敏感)、语法错误
require 时版本号为什么总报 Could not find package
不是网络问题,也不是缓存没清,而是 require 的包名和版本约束没对上本地包的元信息。
必须同时满足:
- 本地包
composer.json中的name(如"hoo/tool")与你在项目中require的字符串完全一致 - 本地包未打 tag 时,
version字段建议设为"dev-main"或"dev-master",并在项目中显式写"hoo/tool": "dev-main"——"*"或"^1.0"会失败 - 若项目
composer.json中设置了"minimum-stability": "stable",则dev-main会被过滤,需加@dev后缀:"hoo/tool": "dev-main@dev"
为什么 vendor 里没出现软链接,改代码也不生效
因为 path 类型默认不启用符号链接;它优先保障构建可重现性,复制是安全兜底行为。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
要启用软链,必须显式配置 "options": {"symlink": true},且只在以下任一位置生效:
- 写在主项目
composer.json的repositories条目里(推荐) - 或写在本地包自己的
composer.json根级(注意:不是主项目的配置)
关键限制:
-
composer install不创建软链 —— 必须用composer update hoo/tool - Windows 用户需管理员权限或开启“开发者模式”,否则静默 fallback 到复制
- Composer 版本必须 ≥ 2.2;旧版忽略
symlink配置且不报错
autoload 改了但 Class not found 怎么办
软链接建好了,路径也对了,但新类还是加载不到 —— 这和 symlink 无关,是自动加载器没刷新。
原因和操作:
- 本地包
composer.json中的autoload(如psr-4映射)修改后,Composer 不会自动重生成加载逻辑 - 必须手动运行
composer dump-autoload(开发阶段不用加-o) - 如果本地包提供了服务提供者(如 Laravel 的
ServiceProvider),仍需手动注册到框架配置中 —— Composer 不处理这部分
最易被忽略的一点:软链接本身不保证 autoload 生效;dump-autoload 是独立步骤,每次改命名空间或新增类都得跑一次。










