Dart私有仓库-私服搭建


之前因为业务需要,需要在公司内部搭建dart私有仓库(私服),主要存放和管理公司内部flutter开发所需要的组件,这里把核心的流程和技术梳理一下分享给大家~如果有帮助别忘了点个赞哈

1. 为什么需要私服

有同学可能会问,dart官方不是有提供组件仓库吗?为啥还需要自己的私服呢,感觉吃力不讨好

其实dart私服存在的目的和gitlab私服等都是一样的,有一定规模的公司都会存在一些内部库/组件,可能会包含一定的业务成分不太方便直接推到公开仓库上去

另一方面如果公司内部flutter业务方比较多,上下游链路也比较长的话,其实公开仓库是根本没办法满足诉求的,只有经过通过定制化的仓库才可以更灵活的对接公司已有平台和链路,扩展性也强得多

2. 服务端方案

对于这种还不算罕见的诉求来说,首先我们应该尝试去站在巨人的肩膀上,看看有没有开源的方案可以使用,毕竟能完整支持常规pub的所有命令就已经是一件大工程了:

官方pub仓库地址

官方私有仓库地址

字节开源的私有仓库unpub地址

这里最完整的应该是官方pub仓库代码,不过其需要Google云服务(AppEngine)才可以跑demo(本地也可以通过Development那边文档来起来,但是我的windwos一直跑失败,各种问题,放弃了- =)

其次官方readme提到了如果只是希望部署一个简单的私服可以尝试第二个仓库,这个仓库虽然目前处于archived状态,但是基本的功能还是有的,代码也不复杂,跑demo容易

最后还搜到一个字节开源的私有仓库地址,个人感觉是在官方私有仓库的基础上加入了包括谷歌服务代理,组件校验,元信息数据库存储支持(默认支持MongoDB)等功能,demo也很容易

最终内部简单讨论以后还是准备基于官方私有仓库来进行开发,因为目前的诉求很少,第二个已经能够满足了,毕竟目前重要的是快速出原型来验证整个流程

PS:还搜到基于git系统(例如直接用公司的gitlab)来进行组件管理的方案,我觉得其实也ok,如果有感兴趣可以自己试试哈~

3. 客户端方案

这里的客户端只要是PC-Web端,一般用于都会登录类似pub.dev网站来进行组件的发布、浏览和下载

image

这里的开源方案仍然还是之前官方和字节开源的两个工程:

官方pub仓库地址

字节开源的私有仓库unpub地址

官方的pub中负责客户端的代码主要集中在web_app和web_css中,web_app主要负责页面DOM构成和逻辑,web_css是CSS样式相关,这里的Web代码基本是通过dart:html这个库来实现,最终通过dart2js来转化为js代码的,并没有通过flutter-sdk参与其中

字节的工程中负责客户端的代码相对比较少,也比较简单,主要集中在unpub_web中,基于angluar-dart实现(把常规angular中js负责的逻辑交由dart负责)

最终客户端这一侧我们决定基于flutter for web能力从零开发,当然整体页面样式和布局会参考官网。

主要考量是因为这一侧针对内部用户开放,后续定制化诉求比较多,而且上述工程无论是技术栈还是实现可参考的范围有限,而且对于后续flutter for web的调研也有帮助

4. 绕过谷歌登录

这里我们其实并没有这个诉求,因为我们后续的组件上传和管理准备通过客户端自研实现,不借助pub命令,但是这里我也把这个常见的需求提一下。

这个谷歌登录要求并不是server端要求的,核心逻辑是在pub命令行代码里面,所以核心就是魔改一下pub命令的源码,将涉及鉴权的代码移除或者修改(例如公司邮箱验证),然后重新build一个新的pub命令即可

网上已经有这方面的详细过程,我贴一下参考链接,有需要的可以自己看看哈:

https://blog.csdn.net/ameryzhu/article/details/101688994

5. 回顾

  • 了解dart私服存在的必要性
  • 了解dart私服的服务端和客户端现有方案
  • 了解如何绕开pub命令的谷歌登录要求

猜你喜欢

转载自blog.csdn.net/sdsh1880gm/article/details/121320833