搭建私有composer源的核心目标是让内部php包能像公开包一样用composer require安装且不公开到Packagist;Satis是免费轻量的静态自托管方案,private Packagist是付费全托管商业服务,选择取决于运维意愿、安全需求和团队规模。

搭建私有 Composer 源的核心目标是:让团队内部的 PHP 包能像安装 monolog/monolog 一样,用 composer require vendor/package 安装,且不公开到 Packagist.org。Satis 和 Private Packagist 是两种主流方案——前者是免费、轻量、静态生成的自托管方案;后者是付费、全托管、带 UI 和权限管理的商业服务。选哪个取决于你是否愿意运维、有没有敏感包、团队规模多大。
用 Satis 快速搭一个静态私有源
Satis 本质是一个“镜像生成器”:它读取你的 satis.json 配置,拉取指定 git 仓库(支持 github、gitlab、私有 Git),解析 composer.json,然后生成静态 JSON 和 html 页面,最后托管在 nginx/apache 上即可使用。
- 安装 Satis:
composer global require composer/satis(确保~/.composer/vendor/bin在$PATH中) - 写
satis.json,例如:{ "name": "my-company/private-packages", "homepage": "https://packages.my-company.com", "repositories": [ { "type": "vcs", "url": "https://gitlab.my-company.com/php/my-lib" }, { "type": "vcs", "url": "https://github.com/my-company/legacy-tool" } ], "require-all": true, "archive": { "directory": "dist", "format": "tar", "skip-dev": true } } - 生成源:
satis build satis.json web/(web/是输出目录) - 把
web/放到 Web 服务器根目录(如 Nginx 的root /var/www/packages),确保能访问https://packages.my-company.com/packages.json - 在项目中配置源:
composer config repositories.my-private type composercomposer config repositories.my-private url https://packages.my-company.com
Private Packagist:开箱即用的企业级选择
如果你不想碰服务器、需要细粒度权限(比如只让前端组访问某个包)、要审计日志、或希望自动同步 GitHub/GitLab 私有仓库,Private Packagist 是更省心的选择。它不是自己部署的软件,而是注册账号后接入已有 Git 平台的 SaaS 服务。
- 注册 packagist.com,创建组织并绑定 GitHub/GitLab 账号(支持 OAuth 或 Personal access Token)
- 添加私有仓库:Private Packagist 会自动发现你账户下所有私有 repo,并根据其
composer.json中的name(如my-company/utils)索引包 - 设置成员角色(Admin / Maintainer / Viewer)和包级访问控制(可限制某包仅对特定团队可见)
- 在项目中配置源:
composer config repositories.private-packagist composer https://repo.packagist.com/my-company/
然后按提示设置认证令牌:composer config http-basic.repo.packagist.com _token YOUR_API_TOKEN
关键细节别踩坑
无论选哪种方案,这几个点直接影响能否顺利安装:
- 包名必须唯一且规范:私有包的
"name"字段(如acme/logger)不能和 Packagist.org 上已存在的同名包冲突,建议统一用公司/组织名作为 vendor 前缀 - Git 标签很重要:Satis 默认只收录带语义化标签(如
v1.0.0)的版本;Private Packagist 同样依赖 tag 或分支别名(如"dev-main as 2.0.x-dev")来识别版本 - 认证方式要匹配:Satis 静态源无需认证(除非你给 Web 目录加了 HTTP Basic);而 Private Packagist 和直接从私有 Git 安装(不用 Satis 中转)都需提前配置
auth.json或composer config - 不要忽略 autoload:私有包的
composer.json中"autoload"必须正确(如 PSR-4 映射),否则即使安装成功也无法自动加载类
基本上就这些。Satis 适合小团队、CI 流程简单、追求零成本的场景;Private Packagist 适合中大型团队、重视安全与协作、愿为省时付费的情况。两者都能让你彻底摆脱“拷贝 vendor 文件”或“手动 git clone”的原始做法。
以上就是如何使用 Satis 或 Private Packagist 搭建自己的 Composer 私有源?的详细内容,更多请关注php中文网其它相关文章!