能装,但必须让composer“看见”私有包:repositories须写在项目级composer.json顶层,type为"vcs"或"composer",url须为可git clone地址(如.git结尾),包名须与私有包composer.json中name逐字符一致,且需正确配置auth.json和autoload规则。

能装,但必须让 Composer “看见”你的私有包——不是加了 URL 就行,而是整个识别链要全通。
repositories 必须写在项目级 composer.json 顶层
写错位置是高频失败原因。Composer 只读项目根目录下的 composer.json 的顶层 repositories 字段,其他地方都无效:
- 不能塞进
config、extra或scripts里,那等于没写 - 不能只配在全局
~/.composer/config.json,项目级配置优先级更高,会覆盖全局 - 格式必须是数组,且每个仓库对象含
type和url两个必需键
正确示例:
{
"repositories": [
{
"type": "vcs",
"url": "https://gitlab.example.com/myorg/utils.git"
}
],
"require": {
"myorg/utils": "dev-main"
}
}
type 和 url 必须严格匹配协议与可克隆性
type 写错或 url 不可 git clone,Composer 就不会去查这个仓库:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
type只能是"vcs"(Git/SVN/Hg 等)或"composer"(Satis/Packagist 兼容源),不能写成"git"或留空 -
url必须是可直接git clone的地址:SSH 格式如git@gitlab.example.com:myorg/utils.git,HTTPS 格式如https://gitlab.example.com/myorg/utils.git - 网页地址(如
https://gitlab.example.com/myorg/utils)会被忽略,因为无法克隆 - 包名
myorg/utils必须和私有包自身composer.json中的name字段逐字符一致(大小写、分隔符都不能差)
认证失败?auth.json 权限和结构必须精准
Composer 不走系统 Git 凭据,只认 auth.json,且对路径、权限、字段名三者都敏感:
- 文件必须放在项目根目录下(或全局
~/.composer/auth.json,但项目级优先) - 权限必须是
600:chmod 600 auth.json,否则直接跳过 - 域名 key 必须和仓库 URL 主机名完全一致,不含端口、路径、协议:
https://gitlab.example.com/group/repo.git→ key 是"gitlab.example.com",不是"https://gitlab.example.com" - Token 类型要匹配:GitLab 用
glpat-开头的 Personal Access Token,填在http-basic的password字段;OAuth2 场景才用username: oauth2
验证是否生效:运行 composer install -v,日志中应出现 Reading composer.json of myorg/utils 和 GET https://gitlab.example.com/api/v4/projects/...。
装进 vendor 了却 Class not found?autoload 没生效
下载成功 ≠ 类能自动加载。Composer 的自动加载映射只依赖私有包自己声明的 autoload 段,并只在安装或执行 composer dump-autoload 时生成:
- 私有包的
composer.json必须有autoload,例如:"psr-4": {"MyOrg\Utils\": "src/"};仅靠files不行,除非你手动require -
psr-4的路径是相对于私有包根目录的,不是主项目——别写成"src/MyOrg/Utils/" - 改过私有包的 autoload 规则后,必须在主项目里运行
composer dump-autoload,否则vendor/composer/autoload_psr4.php不更新
最常被忽略的是:私有包自身没有 autoload 声明,或者声明了但路径指向错误目录。一旦漏掉这步,哪怕包文件全在 vendor/ 下,new MyOrgUtilsClient() 依然报错。










