必须配repositories,否则composer require直接去Packagist找包;path仓库须置于项目根composer.json的顶层repositories数组中,type为"path",url用相对路径,本地包需含合法composer.json且name、version匹配。

必须配 repositories,否则 composer require 会直接去 Packagist 找包,根本不会看你的本地目录。
path 仓库配置写在哪、怎么写才生效
配置必须放在项目根目录 composer.json 的最外层 repositories 数组里,不是嵌在 require 或 config 里。写错位置等于没写,Composer 完全无视。
-
type必须是"path",不能写成"package"或漏掉引号 -
url必须是相对路径(如"./packages/my-utils"),绝对路径(/home/xxx或C:/xxx)在 CI 或换机器后大概率静默失效 - 整个
repositories是数组,哪怕只加一个仓库,也得写成[{ "type": "path", "url": "./packages/my-utils" }] - 本地包目录下必须有合法的
composer.json,且含name和version字段;缺一不可,缺了也不报错,只是跳过该仓库
为什么 composer require vendor/name 报 “Could not find package”
这不是网络问题,也不是缓存没清,而是以下任一条件未满足:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 本地包
composer.json中的name(如"myorg/utils")和你require时写的包名**大小写完全不一致** - 本地包没写
version,而项目又没设"minimum-stability": "dev",导致"dev-main"这类分支名被稳定性策略过滤掉 -
url指向空目录,或目录里压根没有composer.json - 先执行了
composer require,但还没在composer.json里配好repositories—— Composer 不会“边猜边装”,它只查已声明的源
装上了却 Class not found?autoload 没连上
90% 的“找不到类”跟 Composer 加载无关,而是本地包自身的自动加载没注册进项目。
- 确认本地包的
composer.json里有正确的autoload配置,例如:"psr-4": {"MyOrg\Utils\": "src/"} - 运行
composer dump-autoload(开发阶段不用加-o),否则新命名空间不会写入vendor/autoload.php - 如果本地包提供 Laravel Service Provider 或 Facade,必须手动在
config/app.php的providers或aliases里注册 —— Composer 不处理这部分 - 别在
require 'vendor/autoload.php'之前就 new 类,也别用相对路径引入 autoload 文件
Windows 下 symlink 失效、CI 构建失败怎么办
Windows 默认禁用软链接,而 Composer 对 path 仓库默认走 symlink(Linux/macOS)或复制(Windows)。这会导致行为不一致,尤其在 CI 环境中。
- 启用开发者模式或以管理员身份运行终端,才能让
symlink: true生效 - 更稳妥的做法是在
repositories里显式加"options": {"symlink": false},强制复制,避免环境差异 - CI 脚本中不要依赖 symlink 行为;若需调试,可在本地开开发者模式,CI 则统一用复制模式
- 注意:改了
options后要删掉vendor和composer.lock再install,否则旧链接残留
最容易被忽略的是本地包 composer.json 里的 autoload 配置——它必须存在、格式正确、路径真实可访问;否则即使仓库配对、包名匹配、安装成功,类照样找不到。

















