satis原理浅析

什么是satis

我们一般是从packagist获取composer包的,但这些都是公开的。那如果我们想创建自己的私有库呢,比如企业就会有这方便的需要,那我们就可以用satis来创建自己的私有库。

Satis 是一个静态的 composer 资源库生成器。它像是一个超轻量级的、基于静态文件的 packagist 版本。
你给它一个包含 composer.json 的存储库,定义好 VCS 和 资源库。它会获取所有你列出的包,并打印 packages.json 文件,作为 composer 类型的资源库。

什么是主资源库

搭建过satis的同学都知道,如果我们要引用它,需要在composer.json中加入对应的仓库

"repositories": {"satis": {"type": "composer","url" : "http://satis.corp.anjuke.com"},"aptf": {"type":"git","url":"git@gitlab.corp.anjuke.com:maben01/aptf.git"}
}

我们可以看到,satis仓库的类型为composer,那类型为composer是啥意思呢?附上官网的解释

主资源库的类型为 composer。它使用一个单一的 packages.json 文件,包含了所有的资源包元数据。
这也是 packagist.org 所使用的资源类型。要引用一个 composer 资源库,只需要提供一个存放 packages.json 文件的 目录路径。比如要引用 packagist.org 下的 /packages.json,它的 URL 就应该是 packagist.org。而 example.org/packages.json 的 URL 应该是 example.org

抓包看究竟

我们使用composer require xxx命令时,composer会依次查找composer.json中的repositories块是否有指定的包。当看到类型为composer的statis地址时,composer实际上是发起了一次http请求,可以看到user-agent为'composer/1.6.2'。
request 1

但返回了一串“include/all$e75fd28807530f173c649ebc19728a480208c415.json”是什么意思?我是要获取composer包的元数据啊!关键在于includes,官网给出了解释

对于较大的资源库,可以拆分 packages.json 为多个文件。includes 字段允许你引用这些额外的文件。
文件的 SHA-1 码允许它被缓存,仅在 hash 值改变时重新请求。

composer看到返回的sha-1改变了,会发起第二次请求来获取真正的元数据。抓包如下
request 2

可以看到,请求的路径就是上次请求includes块的key值,此时我们终于知道composer包的源地址在哪啦,撒花~

以上是我的个人理解,如有错误,欢迎指正~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/278320.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c#写字板实现加粗功能_Windows 7中写字板和绘画中的新功能

c#写字板实现加粗功能WordPad and Paint are often overlooked accessories included in all versions of Windows since 95. They are still included in Windows 7 and now have a new look with some enhanced features. Here we will take a look at some of the new impro…

浏览器加载静态资源文件异常解决办法

2019独角兽企业重金招聘Python工程师标准>>> 1 使用chrome浏览器加载静态资源文件(css、js等)异常导致cssh和js文件不生效,具体报错如下: Resource interpreted as Stylesheet but transferred with MIME type text/html 原因应该是网页文档类型不一致导…

用Emesene替换Windows Live Messenger

Tired of Windows Live Messenger bloat and wishing that there was a simpler and cleaner replacement that would let you use your live.com and hotmail.com accounts? Look no further, now you can have all that messenger goodness with Emesene! 厌倦了Windows Liv…

myeclipse和maven的clean和build

转: 详解myeclipse和maven的clean和build 2018年04月20日 11:33:34 群星坠 阅读数:3529 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35603331/article/details/80002723MyEclipse是一个被广为…

三星Galaxy S20:如何开启黑暗模式

Justin Duino贾斯汀杜伊诺(Justin Duino)Samsung was one of the first Android manufacturers to add Dark Mode to its handsets. If you recently purchased a Galaxy S20, S20, or S20 Ultra, enabling the UI feature and setting it up on a schedule is extremely easy.…

nginx和apache限制IP地址访问的设置方法

一、nginx禁止IP地址访问1、在nginx配置文件中加入这个&#xff1a;2、重启nginx服务二、apache禁止IP地址访问1、更改vhosts.conf文件&#xff1a;NameVirtualHost 192.168.1.191 <VirtualHost 192.168.1.191:99>#DocumentRoot "/usr/local/kk-mail/data/www"…

wordweb在线编辑_使用WordWeb享受按需词典和词库功能

wordweb在线编辑Run across an unusual word or need a synonym for a word quickly? Usually that means opening a browser and doing the appropriate search. Now you can have all that word power goodness at your fingertips with WordWeb. 遇到一个不寻常的词还是需…

转://RMAN跨平台可传输表空间和数据库

参考链接&#xff1a; http://blog.itpub.net/23135684/viewspace-776048/ http://blog.sina.com.cn/s/blog_69e7b8d7010164xh.html https://www.2cto.com/database/201311/260446.html 这篇文章翻译自Oracle 11gR2官方文档。详细讨论了使用RMAN工具的CONVERT DATAFILE&#xf…

vnc数量限制_通过限制视觉效果在Vista上加速VNC

vnc数量限制This article was written by MetrotekGeek from Metrotek Solutions, a friend of the How-To Geek 本文由Metrotek Solutions的MetrotekGeek撰写&#xff0c;Metrotek Solutions是How-To Geek的朋友 As a computer field tech, I use the remote desktop program…

[转帖]外壳命名空间扩展

一般介绍 很多人一定用过ZipMagic&#xff0c;对它能把一个压缩文件映射成文件夹感到很奇怪&#xff0c;不知道它使用了什么技术&#xff0c;实际上它用到的技术就是实现了一个外壳的命名空间扩展&#xff08;Shell Namespace Extention&#xff09;。 文件夹和视图&#xff1a…

使Safari在Windows Vista上每20秒停止崩溃

The new Safari for Windows is a very slick browser that beats the pants off everything else in the speed department, but it crashes so much on Windows Vista that it’s virtually unusable. 新的Windows版Safari浏览器非常流畅&#xff0c;可以超越速度部门的所有…

[svc]jdk+tomcat部署.jforum论坛部署

安装jdk和tomcat jdk1.7.0_13(系列)下载url 我这里用的最新的jdk. 去官网下载即可cd /usr/local/src/ tar xf jdk-8u162-linux-x64.tar.gz -C /usr/local/ ln -s /usr/local/jdk1.8.0_162 /usr/local/jdk tar xf apache-tomcat-8.5.29.tar.gz -C /usr/local/ ln -s /usr/local/…

ipad和iphone切图_如何从iPhone和iPad上的Mail应用程序删除电子邮件帐户

ipad和iphone切图Nicole Lienemann/Shutterstock妮可利尼曼(Nicole Lienemann)/ ShutterstockWhen you add your Google account to your iPhone or iPad in the Settings app, you’re adding your Gmail account to the Mail app. If you prefer to use third-party email cl…

使用nmcli 实现 bond0 网络组 网桥三种模式

使用nmcli 实现 bond 网络组 网桥模式 bond0&#xff08;负载均衡&#xff09; step1&#xff1a;创建一个bond0的主属nmcli connection add con-name bond0 type bond ifname bond0 mode active-backup 之所以不为绿色是因为还没有创建从属&#xff0c;这个bond0相当于一个虚拟…

RabbitMQ是如何运转的?

前言 之前已经介绍了RabbitMQ交换机模型的相关简单概念&#xff0c;都是作为此篇的基础铺垫&#xff0c;如果对此篇不懂的可以先看我上一篇的介绍认识RabbitMQ交换机模型&#xff0c;或者联系评论&#xff0c;分享《RabbitMQ实战指南》电子书给大家&#xff0c;里面虽然有些许错…

如何种植屡获殊荣的青豆

Most people don’t know this yet, but I’ve decided to give up computers and become a farmer instead. Since I’m the helpful type, I’ve decided to share everything I know about farming with you, starting with how I won my prize winning green beans. 大多数…

充分利用Microsoft Planner的6种方法

Microsoft Planner is pretty simple to use, but some of its more useful features aren’t front and center. If you’re just creating and moving tasks, here are six ways to get a bit more out of Planner. Here’s everything you need to know. Microsoft Planner的…

最详细的排序解析,理解七大排序

最详细的排序解析&#xff0c;理解七大排序 mp.weixin.qq.com点击上方“方志朋”&#xff0c;选择“置顶或者星标” 你的关注意义重大&#xff01; 注&#xff1a; lgN在这里为1og2N简写 为了方便描述,本文默认用int类型比较&#xff0c;从小到大排序 本文排序算法以java语言…

xp删除管理员账户_在Windows XP中从登录屏幕删除用户帐户

xp删除管理员账户So you login to your computer every single day, but there’s more than one account to choose from… either because you got the computer from somebody else, or some software package added a user account that you really don’t want to see. So…

Pycharm下将py文件打包成exe文件

1. 在PyCharm下安装PyInstaller 1. 首先&#xff0c;打开自己要发布的工程 2. 点击底部的【Terminal】打开终端&#xff0c;中输入命令pip install pyinstaller后回车&#xff0c;如图所示进行安装 3. 输入命令 pyinstaller&#xff0c;回车显示安装成功 4. 输入命令 pyinstall…