插件实现背景
八岐:仓库管理统一化
前端项目仓库过多,仓库管理没有统一化
现状是打开新项目时,需要去找对应项目的gitlab地址,或者本地存放的文件夹位置。八岐vscode插件通过维护vscode命令Json数据形式,实现仓库管理统一化。
目前实现功能如下
功能箱目录
一键从 gitlab 拉取指定项目代码
- Ctrl + Shift + P 打开运行命令输入框
- 输入 【 ideacome.install 】
- 远程oss拉取所有项目的repos.json文件,读取所有项目信息
- 下拉展示所有项目目录,选择需要git clone的项目,下载项目代码到自定义存放仓库中
- 自动生成 download-success.json,将下载项目写入
一键打开指定项目 Vscode 窗口
- Ctrl + Shift + P 打开运行命令输入框
- 输入 【 ideacome.open 】
- 获取所有已下载项目目录
- Vscode打开选中项目代码
插件机制
为了让其他人方便的参与,暴露的自定义命令的机制,使用的同学可以自行实现自己的需求,然后按如下步骤实现接入 vscode。
- 实现自己的需求,并按照 commonjs 规范导出一个函数(会在触发时执行)
- 在项目commandIns目录下新建ts文件,将自己的实现放在此目录下
- 使用时唤起命令面板(cmd+shift+p)执行 custom 命令,会弹出选择框,选中自己的命令即可触发定义的逻辑
补充:关于 node 相关的 api 可以直接引入使用,vscode 相关的 api 绑定在了函数执行上下文的 this 中,函数执行时 this 代表 VscodeApi 对象(关于此对象提供的能力可见下文)
待完成功能
- 提供接入文档
- 仓库分类,方便管理
- 一键拉取仓库结构图
- 一键打开 download-success.json,方便修改
- 自动读取目标仓库中已存在的项目,将项目信息自动录入到download-success.json
- 如果手动删除某项目重新下载,现在是push新的信息到download-success.json导致出现两次,后续需要代替旧的项目信息
- 用户远程oss拉取配置repos.json文件,通过editAndUploadToOSS函数实现在线编辑,一键上传OSS
- 思考如何支持接入者提 issue:如需要补充 vscodeApi 新的能力,目前可以通过 vscodeApi.vscode 实现,但还是尽可能封装一层
使用执行
安装插件
在 vscode 侧边的扩展中搜索【ideacome-repo-helper】安装。
执行插件
在命令面板执行对应命令即可。唤起命令面板快捷键如下
- mac:cmd + shift + p
- win:ctrl + shift + p
使用效果
未启动的命令
// {
// "command": "ideacome-repo-helper.initConfig",
// "title": "ideacome.initConfig"
// },
// {
// "command": "ideacome-repo-helper.config",
// "title": "ideacome.config"
// },
// {
// "command": "ideacome-repo-helper.showAll",
// "title": "ideacome.showAll"
// },
// {
// "command": "ideacome-repo-helper.clam",
// "title": "ideacome.clam"
// },
注释的快捷键
{
"key": "ctrl+shift+i",
"command": "ideacome-repo-helper.install"
},
{
"key": "ctrl+shift+o",
"command": "ideacome-repo-helper.open"
},
TODO
- git 批量上传:一个目录下有多个相关的 git 仓库,输入一个 message 就可以批量上传 checked(gitUpload)
- git 共用仓库管理(暂定仓库目录为 github-manage)
- 拆分下拉:一个仓库选择对应分支,就下载对应分支的内容;比如 util 中存在 cjs 和 es6,选择后会自动下载对应分支;上传时也会只更新那部分内容
- sh 脚本仓库选择框执行
- renamePic:批量重命名
- iframe 嵌入使用各个页面
- 图片提取文字
- 文件同步:更改 指定 仓库后一键同步对应所有的下拉仓库(如 utils;解决新增方法后需要手动同步问题)
- 同步 shell 脚本仓库,支持
- 下拉选择框执行对应脚本
- 更新仓库
- 支持一键图片上传OSS,并获取接口返回url链接