composer 不支持中文 type,合法值仅限 vcs、composer、package、path、artifact;误用中文 type 会导致静默忽略;可行方案仅有 artifact、composer、path 三种,且须禁用 packagist.org 并确保 url 可访问。

中文自定义 Repository 驱动本身不是 Composer 原生支持的概念——Composer 不识别“中文”作为 type 或 driver 名,所有自定义驱动必须用英文 type(如 vcs、composer、artifact),且驱动类名、接口实现、注册方式全部遵循 PHP 英文生态规范。所谓“中文驱动”,实际是误传或本地化命名导致的配置失败根源。
为什么写“中文 type”会直接报错
Composer 解析 repositories 时,对 type 字段做硬编码校验:vcs、composer、package、path、artifact 是仅有的合法值。填入 "type": "私有仓库" 或 "type": "内网源" 会导致:
- Composer 完全跳过该 repository,不报错也不提示,静默忽略
-
composer install仍走默认 packagist.org(若未禁用),或 fallback 到下一个合法 source - 错误现象:明明写了源,却始终提示
Could not find package xxx
真正可行的跨内网包分发方案只有这三种
企业内网部署,核心诉求是断外网时仍能装包。必须选以下其中一种,不能混用或自创 type:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
artifact类型:适合离线环境。把所有.zip包放本地目录(如./packages/),文件名必须为vendor-name-version.zip(全小写、中划线、无v前缀),且压缩包内composer.json的name和version必须与文件名严格一致 -
composer类型:对接私有 Packagist 兼容服务(如 Satis、Private Packagist、Artifactory)。URL 必须返回标准packages.json,且需显式设"packagist.org": false -
path类型:仅限开发联调。用composer config repositories.local path "../my-lib"指向本地目录,目标目录下必须有合法composer.json,且name格式为vendor/name
自定义 VCS 驱动不能绕过 type 限制
即使你实现了自己的 MyVcsDriver 并注册了 RepositoryManager::addRepositoryClass('vcs', MyVcsDriver::class),repositories 中的 type 仍必须写 "vcs",不能改成任意字符串(包括中文)。否则:
- Composer 根本不会调用你的驱动类
- 注册代码白写,
activate()执行了也无效 - 常见错误:在
composer.json里写"type": "git-internal",以为能触发自定义逻辑——实际只是被当无效源丢弃
容易被忽略的两个硬性条件
无论选哪种方案,以下两点漏掉一个,整个内网分发就失效:
-
packagist.org必须显式设为false,写在composer.json顶层,不是repositories里,也不是config下;写成"packagist": false或"disable-packagist": true都无效 - 所有自定义源的 URL(
url字段)必须可被 Composer 进程直接访问:HTTP 源要通 DNS 和端口,path要用相对路径(如../libs)或绝对路径(如/data/composer-packages),不能用 Windows 盘符路径(C:\xxx)或带空格的路径










