跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

Composer怎么用Private Packagist_Composer Private Packagist教程【速学】

Private Packagist 必须同时完成全局凭证注册和项目源声明:需用 composer config -g http-basic.repo.packagist.com "" 注册 token,并在 composer.json 中关闭默认源、显式声明私有源;否则必报 401 或 Package not found。 Private Packagist 不是改个
repositories
就能用的 它必须同时完成两件事:全局凭证注册 + 项目源声明,缺一不可。只在
composer.json
里加一条
"type": "composer", "url": "https://repo.packagist.com/your-org/"
,一定会报
401 Unauthorized
或
Could not fetch
—— 因为 Composer 根本没把 token 发出去。 token 必须通过
composer config -g http-basic.repo.packagist.com ""
注册(注意密码字段留空,Private Packagist 只认用户名位置传 token) 项目
composer.json
中需显式关闭默认源:
"packagist": false
,再声明私有源:
"private-packagist": { "type": "composer", "url": "https://repo.packagist.com/your-org/" }
别用
auth.json
手动写 bearer token —— Private Packagist 不支持
bearer
字段,只接受
http-basic
格式,硬写会静默失效 包装不上?大概率是 Private Packagist 的“可见性”没开 和 packagist.org 不同,Private Packagist 默认不暴露任何包。即使你的 GitHub 私有库已连上、
composer.json
也写了正确
name
,只要没手动点进后台「Packages」列表里勾选启用,
composer show
或
install
就永远提示
Package not found
。 登录
packagist.com
→ 进入组织 → 「Packages」页,搜索你的包名(严格区分大小写),确认状态是
Enabled
如果是 Git 仓库(如
git@github.com:myorg/utils
),必须在后台点击「Sync now」并勾选
Include in composer repository
运行
composer clear-cache
再试 —— 缓存可能残留旧的 404 响应,导致重试时直接跳过网络请求 CI 环境里 token 总是认证失败?路径和注入方式搞错了 CI 容器通常没设
$COMPOSER_HOME
,Composer 会去读一个空的全局
auth.json
,而不是你挂载进去的临时文件。结果就是反复提示
Authentication required
却登不上去。 Composer 2.9.6 Composer 2.9.6 是 PHP 生态中高效、稳定的依赖管理工具。此版本在性能与兼容性上进一步优化,改进了依赖解析算法,提升大型项目中的安装与更新速度。它支持并行下载任务,显著减少等待时间,并增强了与私有仓库及镜像源的交互稳定性。同时修复了多项命令行交互与内存使用相关的缺陷,确保在复杂依赖关系下依然可靠运行。无论是新项目初始化还是现有系统维护,Composer 2.9.6 都能为开发者提供流畅、精准的依赖管理体验。 下载 别依赖挂载
auth.json
,改用环境变量
COMPOSER_AUTH
,值为 JSON 字符串:
{"http-basic":{"repo.packagist.com":{"username":"","password":""}}}
确保 CI 脚本中
composer install
前已正确 export 该变量,且未被后续命令覆盖 本地调试时可用
composer config --global --list | grep http-basic
验证 token 是否真写进了全局配置 为什么不能只靠 Satis 或 GitHub Packages 替代? Private Packagist 的核心价值不在“能托管”,而在“自动同步 + 权限隔离 + 审计日志”。Satis 是静态快照,GitHub Packages 没包级权限控制 —— 如果你需要让前端组只能拉
ui-kit
,后端组才能装
payment-sdk
,或者要查上周谁删了某个版本,这些都绕不开 Private Packagist 的后台管理界面。 它不替代 Git,而是监听 Git 事件:新 tag 推送 → 自动解析
composer.json
→ 索引入库 → 触发 webhook 所有包访问走统一域名(
repo.packagist.com
),不用每个项目单独配不同源地址 token 权限可细化到 read / read-write / organization admin,且支持轮换审计 真正容易被忽略的是:Private Packagist 的包名必须和 Git 仓库里的
composer.json
中
name
字段完全一致,包括 vendor 名大小写;输错一个字母,就等于在另一个宇宙里找包。

相关文章