如何使用Satis只镜像你需要的Composer包_构建一个轻量级的公司内部Composer代理


Satis是Composer官方推荐的轻量级私有仓库生成工具,通过配置satis.json指定需镜像的包(如doctrine/orm、guzzlehttp/guzzle等),结合require-all设为false实现精准控制,避免全量同步;利用satis build命令生成包含packages.json和dist文件的静态仓库,部署至内网Web服务器后,客户端通过添加仓库URL或全局配置优先使用内部源,提升安装速度并减少外部依赖,适合企业级PHP依赖管理。

如何使用satis只镜像你需要的composer包_构建一个轻量级的公司内部composer代理

在公司内部搭建一个轻量级的 Composer 代理,既能提升依赖安装速度,又能避免对 packagist.org 的频繁请求,还能精确控制哪些包可以被使用。Satis 正是为此设计的工具——它是一个静态的 Composer 仓库生成器,能让你只镜像需要的包,而不是整个 Packagist。

什么是 Satis?

Satis 是 Composer 官方推荐的一个工具,用于构建私有的、精简的 Composer 镜像仓库。它不像完全镜像那样同步所有包,而是根据你配置的规则,只抓取指定的包及其版本,生成一个 packages.json 文件供 Composer 使用。

这意味着你可以:

  • 只允许团队使用经过审核的开源包
  • 缓存常用包以加快 CI/CD 和本地安装速度
  • 减少对外部网络的依赖
  • 托管私有包(配合 artifact 或 VCS)

安装与初始化 Satis

通过 Composer 全局或项目方式安装 Satis:

composer global require composer/satis

确保 ~/.composer/vendor/bin 在你的 PATH 中,以便使用 satis 命令。

初始化配置文件:

satis init

这会生成一个默认的 satis.json 文件。

配置只镜像你需要的包

编辑 satis.json,明确列出你需要的包。例如:

{ "name": "My Company Composer Repository", "homepage": "https://packages.mycompany.com", "repositories": [ { "type": "vcs", "url": "https://github.com/doctrine/orm" }, { "type": "vcs", "url": "https://github.com/guzzle/guzzle" }, { "type": "vcs", "url": "https://github.com/symfony/http-foundation" } ], "require-all": false, "require": { "doctrine/orm": "^2.10", "guzzlehttp/guzzle": "^7.4", "symfony/http-foundation": "^6.0" }, "output-dir": "web" }

关键点说明:

  • repositories:声明源,支持 VCS、artifact、composer 等类型
  • require:精确控制你要镜像的包和版本约束
  • require-all:设为 false 表示只处理 require 中列出的包,不递归抓取全部依赖
  • output-dir:生成的静态文件目录,通常设为 web 可访问路径

生成静态仓库

运行构建命令:

satis build satis.json .

Satis 会:

Anakin Anakin

一站式 AI 应用聚合平台,无代码的AI应用程序构建器

Anakin 290 查看详情 Anakin
  • 克隆或下载你指定的包
  • 分析其 composer.json
  • 提取元数据并写入 web/packages.json
  • 将实际的 dist 文件(zip/tar)复制到 web/dist/ 目录

完成后,web/ 目录就是一个完整的静态 Composer 仓库。

部署为内部代理服务

将 web/ 目录部署到公司内网 Web 服务器,比如 Nginx:

server { listen 80; server_name packages.mycompany.com; root /var/www/satis/web; index index.html; autoindex off; }

确保 PHP 不需要执行,这只是静态文件服务。

客户端使用你的 Satis 仓库

在项目 composer.json 中添加仓库:

{ "repositories": [ { "type": "composer", "url": "https://packages.mycompany.com" } ] }

或者全局设置(推荐给所有员工):

composer config -g repositories.company composer https://packages.mycompany.com

这样 Composer 会优先从你的 Satis 源查找包,未命中时才会回退到 packagist.org(除非你设置 "packagist.org": false 来禁用)。

自动化更新

建议通过 CI/CD 或定时任务定期重建仓库:

# crontab -e 0 3 * * * cd /path/to/satis && satis build satis.json . >> build.log 2>&1

也可以结合 webhook,在你关注的包有新版本时触发重建。

基本上就这些。Satis 虽然功能简单,但非常适合构建轻量、可控的内部 Composer 代理。不复杂但容易忽略的是:一定要关掉 require-all,否则可能意外拉取成千上万个包,失去“轻量”的意义。

以上就是如何使用Satis只镜像你需要的Composer包_构建一个轻量级的公司内部Composer代理的详细内容,更多请关注php中文网其它相关文章!


# 如何在  # 辽阳抖音推广seo  # 宁海网站优化选哪家  # 佛山seo优化单价  # 云南产品营销推广公司  # 东湖区常用网络推广网站  # 研学课题网站建设思路  # 网站优化怎么操作视频  # 贵港附近seo营销招聘  # 上海闵行区虹桥网站优化  # 菏泽网站建设怎么收费  # 的是  # 内网  # 如何处理  # 构建一个  # composer  # 如何使用  # 设为  # 递归  # 镜像  # 配置文件  # 工具  # nginx  # github  # json  # git  # js  # html  # php  # satis 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894 】


相关推荐: 动漫之家观看全集库 动漫之家免费资源网地址  优化长HTML属性值:SonarQube警告与实用策略  抖音团长模式怎么做?团长模式是什么意思?  优化Flask模板中SQLAlchemy查询迭代标签:处理字符串空格问题  Python中处理嵌套字典与列表的数据提取与过滤教程  Linux如何优化系统启动流程_Linux启动项优化方案  使用Google服务账号实现Google Drive API无缝集成与文件访问  阿里旺旺电脑网页版入口 阿里旺旺电脑版网页登录入口  《东方财富》条件单关闭方法  自定义你的VS Code状态栏,监控关键信息  《梦想世界:长风问剑录》药师一图流分享  极兔快递官网查询入口手机版 手机极兔快递登录查询入口官方  荣耀Magic6 Pro拍照成像偏暗_荣耀Magic6 Pro夜景优化  c++如何链接Boost库_c++准标准库的集成与使用  漫蛙漫画直连入口 _ manwa官方备用入口实时检测  《tt语音》超级玩家开通方法  苹果自助维修计划支持哪些设备机型  qq音乐官方网站入口_qq音乐在线听歌网页版链接  网页版网易云音乐入口_网易云音乐在线官网登录  mail.qq.com登录入口 QQ邮箱网页版直达  传统曲艺莲花落的表演形式是  diskgenius分区工具如何设置Bios启动项  解决异步Python机器人中同步操作的阻塞问题  教育查询官方网站入口 教育个人档案查询免费官网  德邦快递查询入口登录官网 德邦快递单号查询系统入口  太平年在哪个平台播出  Excel怎么用XLOOKUP函数实现双向查找_ExcelXLOOKUP替代VLOOKUP+HLOOKUP的高级用法  c++20的指定初始化(Designated Initializers)怎么用_c++ C风格结构体初始化  使用TinyButStrong生成HTML并结合Dompdf创建PDF教程  Google Drive API服务器端访问指南:服务账户认证详解  Golang如何使用crypto/md5生成哈希_Golang MD5哈希生成方法  动漫岛在线动漫网 动漫岛动漫在线观看官方入口  店铺如何做视频号推广?做视频号推广有用吗?  第五人格PC版怎么避免被封号_第五人格PC版防封号注意事项  苹果手机缓存怎么清除_苹果手机缓存如何清除iphone各版本操作步骤  Lar*el Dusk 测试中管理浏览器权限:以剪贴板访问为例  Google Cloud Functions 时区处理指南:理解与最佳实践  《全民k歌》音乐怎么下载到本地2025  《海贝音乐》均衡器设置方法  QQ邮箱官方登录页_腾讯出品安全稳定的邮箱服务  《蓝色星原:旅谣》坐骑获取攻略  多闪电脑版下载_多闪PC端模拟器使用  mysql如何配置从库只读_mysql从库只读设置方法  CSS如何使用outline-offset与颜色组合突出元素边框  智慧职教mooc平台登录网址 智慧职教mooc官网直达  向日葵客户端怎么进行语音通话_向日葵客户端语音通话功能使用方法  掌握CSS :has() 选择器:父选择器、嵌套限制与常见陷阱解析  Python模块化编程:避免循环导入与共享函数的最佳实践  GBA模拟器手柄按键设置  Firefox OS应用开发:解决XMLHttpRequest跨域请求阻塞问题 

 2025-11-30

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.