如何使用 Satis 或 Private Packagist 搭建自己的 Composer 私有源?

1次阅读

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

如何使用 Satis 或 Private Packagist 搭建自己的 Composer 私有源?

搭建私有 Composer 源的核心目标是:让团队内部的 PHP 包能像安装 monolog/monolog 一样,用 composer require vendor/package 安装,且不公开到 Packagist.org。Satis 和 Private Packagist 是两种主流方案——前者是免费、轻量、静态生成的自托管方案;后者是付费、全托管、带 UI 和权限管理的商业服务。选哪个取决于你是否愿意运维、有没有敏感包、团队规模多大。

用 Satis 快速搭一个静态私有源

Satis 本质是一个“镜像生成器”:它读取你的 satis.json 配置,拉取指定 git 仓库(支持 githubgitlab、私有 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 composer
    composer config repositories.my-private url https://packages.my-company.com

Private Packagist:开箱即用的企业级选择

如果你不想碰服务器、需要细粒度权限(比如只让前端组访问某个包)、要审计日志、或希望自动同步 GitHub/GitLab 私有仓库,Private Packagist 是更省心的选择。它不是自己部署的软件,而是注册账号后接入已有 Git 平台的 SaaS 服务。

如何使用 Satis 或 Private Packagist 搭建自己的 Composer 私有源?

察言观数AskTable

企业级AI数据表格智能体平台

如何使用 Satis 或 Private Packagist 搭建自己的 Composer 私有源? 72

查看详情 如何使用 Satis 或 Private Packagist 搭建自己的 Composer 私有源?

  • 注册 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.jsoncomposer config
  • 不要忽略 autoload:私有包的 composer.json"autoload" 必须正确(如 PSR-4 映射),否则即使安装成功也无法自动加载类

基本上就这些。Satis 适合小团队、CI 流程简单、追求零成本的场景;Private Packagist 适合中大型团队、重视安全与协作、愿为省时付费的情况。两者都能让你彻底摆脱“拷贝 vendor 文件”或“手动 git clone”的原始做法。

以上就是如何使用 Satis 或 Private Packagist 搭建自己的 Composer 私有源?的详细内容,更多请关注php中文网其它相关文章!

text=ZqhQzanResources