必须在主项目composer.json的repositories中配置path类型源,url为相对路径,本地包需有合法composer.json且name与require一致、版本用dev-main,启用symlink需配"options":{"symlink":true}并执行composer update。

path仓库配置必须写在主项目composer.json的repositories里
Composer 不会主动扫描你硬盘上的任意目录,它只认 repositories 数组里明确声明的源。你在本地包自己的 composer.json 里加 repositories 没用——主项目根本不会读它。
正确做法是:打开主项目的 composer.json,在根级添加 repositories 字段(不是嵌套在 require 或其他地方):
{
"repositories": [
{
"type": "path",
"url": "../my-component"
}
],
"require": {
"acme/component": "dev-main"
}
}
-
url必须是相对于主项目composer.json的路径,比如../my-component或./packages/utils;绝对路径(/home/xxx、C:\xxx)在 Windows 上极易静默失效 -
url指向的是**含composer.json的目录**,不是文件本身,末尾不要加/ - 如果路径里有空格或中文,某些 PHP 版本会解析失败,尽量避免
本地包的name和version必须与require严格对齐
报 Could not find package acme/component?90% 是因为 name 或 version 不匹配。Composer 不做模糊匹配,大小写、分隔符(只认短横线 -,不认下划线 _ 或驼峰)、vendor 名全部逐字校验。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 检查本地包根目录下的
composer.json是否存在且语法合法(无尾逗号、全双引号) - 确认其
name字段值(如"acme/component")和require里写的完全一致 -
version字段在 path 仓库中被忽略,但分支名必须存在且可访问;用dev-main、dev-develop这类,别写1.0.0 - 若本地包 Git HEAD 在
feature/login分支,就得写"acme/component": "dev-feature-login"
改了代码不生效?大概率 symlink 没真正启用
默认行为是复制(copy),不是链接(symlink)。你改了 ../my-component/src/Helper.php,vendor/acme/component/Helper.php 还是旧文件——这是最常被忽略的调试陷阱。
- 关键不在主项目配
"symlink": true,而在于**本地包自己的composer.json里是否写了"options": {"symlink": true}** - Windows 用户必须以管理员权限运行终端,否则创建 symlink 失败且无提示
- Docker 场景需加
--cap-add=SYS_ADMIN,且挂载方式要支持 symlink - 验证是否成功:
ls -la vendor/acme/component(Linux/macOS)应显示-> ../my-component;Windows 用dir vendorcmecomponent看是否为“JUNCTION”类型 - 改完本地代码后,必须运行
composer update acme/component,install不刷新已有链接
autoload 不生效?不是 Composer 没加载,而是映射没覆盖真实路径
即使 symlink 成功,new AcmeComponentHelper() 报错 Class not found,说明自动加载映射没包含你本地包的真实路径。
- 确保本地包
composer.json中的autoload配置正确,例如:"psr-4": {"Acme\Component\": "src/"} - 执行
composer dump-autoload -o刷新主项目的 autoload 映射(仅当本地包结构或命名空间变动时需要) - Xdebug 断点失效?检查 IDE 中设置的路径是否和磁盘真实路径一致(例如
/Users/xxx/my-component而非/var/www/html/vendor/acme/component) - CI/CD 或生产环境部署前,务必移除
repositories中的 path 条目,否则构建必然失败
repositories 就万事大吉,但没检查本地包 composer.json 里有没有 options,也没验证 symlink 是否真建成了——结果改半天代码,跑的还是 vendor 里的旧副本。










