likes
comments
collection
share

vscode插件-flutter业务模块化管理

作者站长头像
站长
· 阅读数 6

vscode插件-flutter业务模块化管理

1. 为什么要开发这个vscode插件?

在flutter项目中,我们现在开发了一些自己的组件库,依赖库上传到公司的git,通过如下方式引用。

vscode插件-flutter业务模块化管理 从主工程联调这个库时,可以联调(从主工程直接跳转到plugin中)可以直接修改,修改后再次hot resart可以生效。

但是过一会代码就丢了,原因就是上面的引用方式并没有指定本地路径,所以flutter统一把这些依赖库下载到一个本地缓存路径了。

vscode插件-flutter业务模块化管理 这个本地缓存目录里面,是没有用git管理的,这里只是一个临时缓存,所以只要从在flutter项目中使用flutter packages get,这些就会被直接覆盖。

所以要让本地plugin的修改不丢失,就需要git clone到本地并指定路径,这样修改就不会丢失。

开发这个vscode插件的主要目的就是实现自动git clone到本地,不让plugin代码修改丢失。

2. 现有的plugin管理方案

其实上面开发plugin丢代码的问题,我们已经通过ci.sh脚本解决了,为什么还要开发这个插件呢?

vscode插件-flutter业务模块化管理 现有的方案是把插件统一放到vendor目录下面,在pubspec.yaml文件中使用path进行引用。

vscode插件-flutter业务模块化管理 并且使用shell脚本进行更新。

但是这带来一个非常严重的问题。

vscode插件-flutter业务模块化管理 pubspec.yaml文件是进行统一依赖库管理的文件,上线前需要对所有的依赖库版本进行检查,向上图这样的方式根本不能确定即将上线的依赖库的版本。

依赖库的版本不是由pubspec.yaml决定的,而是这个路径下面的子目录决定的,所以上线前必须执行ci.sh脚本。

如果这个依赖库要指定版本,就必须到ci.sh修改checkout到指定tag的脚本,如果没有修改就会直接导致错误版本的依赖库上线。

所以如果依赖库有多个的话,需要仔细review ci脚本,上线工作量比较大而且不靠谱。

3.flutter-dependency-manager展示

vscode插件-flutter业务模块化管理 这个插件就是对pubspec.yaml文件进行管理的,把右边的文件映射成左边的树状结构视图。

有三种item:

1.使用版本号指定的github模式,通常都是比较著名的第三方库,不需要修改。

2.使用git url指定的模式,通常是公司内部开发的组件库或者业务模块化库,需要定期修改。

3.使用本地路径指定的模式,是组件开发中的模式,可以进行联调和修改。

插件提供两个操作,1.把git url模式下载到本地路径,进行修改和联调。2.开发完成后上传到git并打tag,把local path模式改成git url模式。

注意只有蓝色文字对应的操作是这个插件提供的,其他的操作需要自己使用git命令和工具完成。

git clone后会自动建立workspace,可以很方便的进行插件代码的浏览和修改,界面如下。

vscode插件-flutter业务模块化管理 插件自动生成的目录结构如下,所有的插件代码不在主工程中,主工程只是使用path或者git url进行引用。 vscode插件-flutter业务模块化管理 上线之前,可以通过插件检查所有的依赖库,必须确保所有依赖库都是使用git url和tag方式进行引用的,这样可以确保上线的是指定的版本。

因为打包机上面并没有装这个插件也没有plugin目录,所以如果还有依赖库是通过path方式引用的,会直接打包失败,这是可以形成一个强制版本检查。

目前已经上架vscode插件市场,感兴趣的同学可以下载用一下。

vscode插件-flutter业务模块化管理