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

穿越時空
发布: 2025-12-07 02:57:33
原创
577人浏览过
搭建私有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 仓库(支持 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 composer
    composer config repositories.my-private url https://packages.my-company.com

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

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

CA.LA
CA.LA

第一款时尚产品在线设计平台,服装设计系统

CA.LA 86
查看详情 CA.LA
  • 注册 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中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号