私有仓库需在composer.json中声明为vcs类型并提供可git clone的url;凭据应通过auth.json管理,避免硬编码;require版本须匹配tag(如v1.0.0)或带-dev后缀的分支名(如dev-main)。

私有仓库必须声明为 VCS 类型才能被 Composer 识别
Composer 默认只信任 packagist.org 上的包,想拉取公司内网 Git 仓库的代码,不能直接写 "vendor/package": "dev-main" 就完事。必须在根项目的 composer.json 中显式声明该仓库为 vcs 类型,并提供完整 URL。
- GitLab、GitHub、Gitee 等都属于 VCS(Version Control System),URL 必须是可被
git clone直接使用的地址,例如https://gitlab.example.com/group/pkg.git或git@gitlab.example.com:group/pkg.git - 如果用 HTTPS 地址,需确保运行
composer install的机器已配置好对应域名的 TLS 证书,或临时禁用 SSL 验证(不推荐) - 若用 SSH 地址,必须提前在目标机器上配置好 SSH key 并能免密访问 —— 这点在 CI/CD 流水线中极易失败,建议优先用 HTTPS + Personal Access Token
使用 auth.json 避免把凭据硬编码进 composer.json
私有 Git 仓库通常需要认证,但把 token 或密码写进 composer.json 会随代码提交,极不安全。正确做法是利用 Composer 的全局 auth.json 文件统一管理凭据。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
auth.json应放在 Composer 的配置目录下:~/.composer/auth.json(Linux/macOS)或%APPDATA%Composeruth.json(Windows) - 内容格式必须严格为:
{ "http-basic": { "gitlab.example.com": { "username": "_", "password": "glpat-xxxxxx" } } } - HTTPS 认证时 username 可填任意非空字符串(如
"_"),password 填 Personal Access Token;SSH 则无需此文件,靠系统 SSH agent - CI 环境中常通过环境变量注入 token,再用脚本生成
auth.json,避免 token 出现在日志里
require 的版本约束要匹配私有包的分支或 tag 规则
私有包没有 Packagist 的自动版本映射,Composer 依赖你本地 Git 仓库的分支名和 tag 来解析版本。如果乱起名,composer require 会报 Could not find package 或 no matching package found。
- 推荐用语义化 tag:如
v1.0.0、v2.3.1,然后在业务项目中写"vendor/private-pkg": "^1.0" - 若暂未打 tag,可用分支名,但必须加
-dev后缀:如分支叫main,require 写"vendor/private-pkg": "dev-main";分支叫release/2.1,就写"dev-release/2.1" - 注意:分支名含斜杠时,Composer 会自动转义,但某些旧版本(release21)
- 执行
composer update vendor/private-pkg时,Composer 会重新 fetch 远程仓库元数据,确保 tag/分支信息最新
autoload 配置错误会导致类找不到,且错误提示不明确
私有包自身 composer.json 中的 autoload 若没配对,即使安装成功,PHP 也加载不到类 —— 报错通常是 Class XXX not found,容易误判为路径或命名空间问题。
- 最常用的是 PSR-4:确保
"autoload": { "psr-4": { "Vendor\Pkg\": "src/" } }中的命名空间前缀与实际 PHP 文件路径完全一致 - 如果私有包含多个子模块(如
src/Http/和src/Domain/),不要合并写成一个映射,应分别列出,或统一归到同一命名空间下 - 修改了
autoload后,必须运行composer dump-autoload(在私有包目录下),否则新规则不会生效;业务项目里也要composer install或dump-autoload刷新 autoload_files.php - 调试技巧:运行
composer show -s vendor/private-pkg查看其 autoload 配置是否被正确读取
dev-* 分支的协作约定,比技术配置更难统一。上线前务必确认所有环境(本地、测试、生产)用的是同一套 auth.json 路径和凭证方式,否则某台机器上跑通不代表能交付。










