本地path仓库不生效需依次检查:repositories位置是否在根composer.json顶层、是否为数组格式、url是否为相对路径且本地包含合法composer.json;删composer.lock和vendor后重装; autoload未刷新或映射错误会导致class not found;切回远程包须先删repositories再清锁重装。

本地 path 仓库不生效,先检查 repositories 是否写对位置
Composer 只认项目根目录 composer.json 顶层的 repositories 字段,嵌在 require、config 或其他对象里会直接被忽略。常见错误是把它当成 require 的一部分,结果配置形同虚设。
-
repositories必须是数组,哪怕只有一个源也要写成[{ "type": "path", "url": "../mylib" }] -
url必须是相对路径(如../mylib或./packages/utils),不能以/开头,Windows 下绝对路径或file://均静默失败 - 本地包目录下必须存在合法
composer.json,且含完整name字段(大小写敏感),例如"name": "myorg/utils"
composer install 还是从 Packagist 下载?说明 composer.lock 锁住了旧行为
Composer 不会在已有 composer.lock 的情况下重新读取 repositories 配置——它只按锁文件还原,完全跳过新声明的本地源。这不是缓存问题,是设计如此。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 删掉
composer.lock和整个vendor/目录(残留旧包会导致 autoload 仍指向远程版本) - 执行
composer install(不是update),让 Composer 从头解析composer.json并生成新锁文件 - 如果只想重装单个包,可先
composer remove myorg/utils,再composer require myorg/utils:dev-main,但前提是repositories已存在且路径正确
装上了却 Class not found?多半是 autoload 没刷新或映射错位
Composer 安装成功 ≠ 类能自动加载。本地包的命名空间和路径必须与自身 composer.json 中的 autoload 配置一致,且主项目需触发重载。
- 确认本地包的
composer.json含有效 autoload,例如:"autoload": {"psr-4": {"MyOrg\Utils\": "src/"}} - 在主项目中运行
composer dump-autoload(开发阶段不用加-o) - 如果本地包提供 Laravel Service Provider,仍需手动在
config/app.php中注册providers,Composer 不处理这部分 - 别在
require 'vendor/autoload.php'前就 new 类,也别用include相对路径绕过 autoload
想改回远程包或切回正式发布版,别只改 require 版本号
仅把 "myorg/utils": "dev-main" 改成 "1.2.0" 不够,Composer 可能仍从本地 path 源拉取,因为 repositories 还在生效,且 composer.lock 里记录的 dist URL 可能仍是本地路径。
- 先删掉
repositories里对应那条path配置 - 删掉
composer.lock和vendor/ - 再跑
composer install,此时才会真正走 Packagist 或你配置的其他源 - 若团队协作,避免硬编码
../mylib这类路径;CI 环境应通过环境变量或条件判断切换repositories,否则构建必然失败
vendor/ 后没清 autoload cache,或本地包 composer.json 缺 minimum-stability 导致 dev-main 被稳定性策略过滤掉——这两处一错,整个映射就卡在“看似装了,实则没用”状态。










