本地包修改后主项目不生效,是因为 repositories 未配置在主项目 composer.json 根级、本地包 name 不匹配或未启用 symlink;需确保 path 类型仓库含 "symlink": true 并运行 composer update acme/utils。

本地包改了代码,主项目不生效?不是 Composer 坏了,是你没配对 repositories、name 和 dev-main 这三样东西。
为什么 composer require vendor/name:dev-main 总报 “Could not find package”
根本不是网络或缓存问题——Composer 根本没“看见”你的本地目录。它只从主项目根目录的 composer.json 里读 repositories 数组,别的地方写的全无效。
-
repositories必须写在主项目(不是本地包)的composer.json根级,且是合法 JSON 数组,例如:[{ "type": "path", "url": "./packages/my-utils" }] -
url推荐用相对路径;Windows 下绝对路径(如C:/work/my-utils)极易静默失败 - 本地包目录下必须有
composer.json,且name字段(如"acme/utils")要和require里写的**完全一致**(大小写敏感、不能少 vendor) - 本地包目录需已执行过
git init并至少有一个commit,否则 Composer 直接跳过
怎么让改完本地包代码立刻在主项目里生效
默认行为是复制(copy),不是符号链接(symlink)。你改的是 ../my-utils/src/Helper.php,但 vendor/acme/utils/src/Helper.php 还是旧文件。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(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 update acme/utils(不是install,也不是dump-autoload)才会重建 symlink - 验证是否成功:
ls -la vendor/acme/utils应显示-> ../my-utils;Windows 用户用dir vendor\acme\utils看是否为“快捷方式”类型 - Windows 需开启开发者模式或以管理员权限运行命令行,否则 symlink 创建失败且无提示
require 里版本写 dev-main 还是 *?
必须写 dev-main(或你本地 Git 分支的实际名字,如 dev-develop),不能写 * 或 ^1.0。
- path 类型仓库下,Composer **忽略本地包
composer.json中的version字段**,只认当前 Git HEAD 所在分支名 - 写
"acme/utils": "*"会被解释为“任意稳定版”,而本地包没有 tag,必然失败 - 写
"acme/utils": "^1.0"同理——它会去找 tag,找不到就报Could not find a matching version - 如果你本地在
main分支,require就必须写"acme/utils": "dev-main"
最容易被忽略的一点:path 仓库不自动同步任何元数据。你改了本地包的 composer.json 里 description 或 autoload,主项目不会感知——它只在 update 时重新读一次,而且只读 name 和分支名。










