私有包未进vendor主因是repositories配置错误:必须位于composer.json顶层,type为"vcs"或"composer",git url需带.git,镜像url须以/结尾;auth.json权限须为600且内容规范;require包名须与私有库name字段完全一致。

私有包装不进 vendor,不是网络不通,而是 Composer 根本没“看见”它——repositories 写错位置、type 值不对、URL 缺 .git 或少斜杠,都会导致静默忽略。
composer.json 里 repositories 必须写在顶层且格式正确
Composer 只扫描 composer.json 最外层的 repositories 字段,嵌套在 config、extra 或其他字段下等于没写。
-
type必须是"vcs"(Git 仓库)或"composer"(Satis/Artifactory 镜像),不能是"git"、"package"或留空 -
url必须是可直接git clone的地址:HTTPS 格式要带.git后缀(如https://gitlab.example.com/acme/utils.git),SSH 格式要含用户名和域名(如git@gitlab.example.com:acme/utils.git) - 如果用的是 Satis 或 Artifactory 这类 Composer 类型镜像,
url必须以/结尾(如"https://pkgs.internal/"),否则请求会拼成/packages.json→/packages.json变成packages.json,404
私有 Git 仓库必须配 auth.json 且权限严格为 600
Composer 不读系统 SSH agent 或 Git 凭据,只认 auth.json,且路径、结构、权限三者缺一不可。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 全局路径:Linux/macOS 是
~/.composer/auth.json;Windows 是%APPDATA%Composeruth.json - 内容必须用
http-basic字段,key 是仓库 host(不含协议/端口/路径),例如"gitlab.example.com",value 是{"username": "oauth2", "password": "glpat-xxx"} - 文件权限必须是
600:执行chmod 600 ~/.composer/auth.json,否则 Composer 直接跳过,不报错也不提示
require 中的包名必须与私有库 composer.json 里的 name 完全一致
Composer 不按 Git 路径推断包名,只严格比对私有库自身 composer.json 中的 name 字段。
- 假设私有库根目录
composer.json写的是{"name": "acme/utils"},那主项目require就必须写"acme/utils": "dev-main" - 大小写、分隔符(
/vs-)、vendor 段都不能差——"Acme/utils"、"acme-utils"、"utils"全部失败 - 分支必须加
dev-前缀:"dev-main"可行,"main"或"*"会被当模糊约束,去 packagist.org 查,查不到就报Could not find package
装进 vendor 后 Class not found?检查 autoload 和 dump-autoload
下载成功 ≠ 自动加载成功。Composer 的类映射完全依赖私有包自己声明的 autoload 段,并且只在安装或显式执行时生成。
- 私有包的
composer.json必须有autoload(如{"psr-4": {"Acme\Utils\": "src/"}}),否则vendor/autoload.php不会包含它 - 安装后若仍报
Class not found,先运行composer dump-autoload强制刷新映射 - 如果私有包改了
autoload规则但没重装,旧映射还在缓存里,得删掉vendor/composer/autoload_*.php文件再试
最容易被忽略的是:私有包的 composer.json 里没写 autoload,或者写了但路径指向空目录;这种情况下,即使 composer install 成功,new 任何类都会失败——因为根本没注册到自动加载器里。










