公司前端有很多项目,但是gitlab社区版自带的搜索功能实在是太弱了, 只能搜索当前项目,不能跨项目搜索, 也不能搜索代码内容。 所以我就开发了一款
gitlab全局搜索工具, 目前支持搜索代码搜索。
主要依赖于 gitlab 提供的 REST API (search)
首先是一些公共逻辑,设置用户个人 Token,并获取当前用户的所有群组、 项目。群组 和项目做了持久化缓存(indexdb),避免每次都拉取。
搜索功能上支持群组过滤,群组过滤支持模糊和精准过滤。精准使用 select组件支持搜索多选,模糊使用 input,使用字符模糊匹配群组名称。
搜索代码时,先获取当前群组下的所有项目,然后再去每个项目下搜索代码,最后把结果汇总。
使用micromatch做最终结果的过滤,支持 glob 模式(参考 vscode搜索的文件过滤模式)
点击搜索结果卡片,可以跳转到远程仓库的当前文件,并滚动到开始行, 这个功能主要是拼接 url,格式如下:
另外支持结果统计,可以按照项目纬度导出 excel, 这个功能主要是使用 xlsx 做的。
小版本开始迭代,到时每个项目的开发分支过多,而且各位同事没有发布后删除开发分支的习惯,导致分支越来越多,想做一个批量删除过时分支的功能。 主要思路是先获取群组下的所有项目,然后再去每个项目获取分支, 判断分支的最后提交时间, 如果超过某个时间就删除分支。
平时开发中,发现有些公共依赖版本过时了,想要批量更新某个依赖的版本号, 目前只能一个个项目去更新,比较麻烦。 所以想做一个批量更新某个依赖的功能。
首先根据群组搜索到所有项目,然后再去每个项目拉取package.json文件, 判断是否有当前依赖, 如果有那么就更新依赖, 并提交代码。