甚至用不了五分钟就能学会vscode插件开发

插件(plugin)是vscode生态的扩展能力,插件可以让基于vscode开发的过程丰富多彩。比如层级括号颜色区分,甚至是各种ai智能补全工具,成为程序员在使用vscode进行开发时不可缺少的插件工具,大大提升了程序员的开发体验。

前言

        vscode的市场占有率越来越高,产品的轻量化是一大原因,更重要的是vscode拥有可高度定制化的插件生态。如果掌握了vscode插件开发能力,对团队提效和提升个人影响力都是一个较好的技术储备。本文通过简单的功能流程,旨在5分钟或更快跑通vscode开发流程。

        示例,写中文的“变量”,开发一个vscode的插件进行更替,最终全量替换成“var”。

变量 a = 1; // 自己书写的代码
var a = 1; // 插件替换的代码

创建项目

        在创建项目之前,我们需要创建一个项目目录(路径随意),可以使用mkdir指令创建文件夹,再基于该文件夹目录打开vscode。

        vscode插件开发需要安装两个全局依赖,分别是 yo  generator-code 。这里使用了npm,执行命令npm install -g yo generator-code。

  • yo:一个通用型项目的脚手架工具。
  • generator-code:vscode的扩展生成器,需要配合yo使用。
npm install -g yo generator-code

⚠️注意,node版本需要>=18,否则会出现类似以下的情况。

        安装完成后,执行命令yo generator-code,创建vscode的插件开发项目。

yo generator-code

        这里我们选择JavaScript语言进行开发,各种配置如extension的name、identifier、desciption等可以先随意配置,后边也可以在package.json中修改。

        到此,我们的vscode插件开发项目就创建完成了! 

指令配置

        用vscode进入这个项目的文件目录,可以看到如下资源结构。extension.js文件很重要,里边是我们插件实现的业务逻辑。

        进入package.json文件,可以看到contributes中的commands是一个数组,里边可以包含多个指令,title就是指令名称,原本是“Hello World”,我这里先换成to plugin,方便后续调试清晰看到(也可以不改)。

本地调试

        在vscode插件项目中敲击F5,进入本地调试模式,会出现下图中的调试台,并且自动会开启一个调试窗口,可以随意打开一个项目进行调试。

        在调试窗口中,随意找一个编辑位置,写上如下代码:

变量 a = 1;
变量 b = 2;

        敲击键盘ctrl+shift+p打开指令栏,输入to plugin。(如果package.json的title没有修改就是Hello World) ,然后敲击回车。

        右下方会出现提示语,表示我们的vscode插件可以正常调试。

        我们回到插件工程,打开extension.js文件,可以看到有下图红圈中的语句,说明这里激活插件后,匹配了注册的plugin.helloWord命令,执行命令的回调函数会执行代码。 

核心编码

        那么我们可以直接在activate方法中新增其他指令,这里我直接在这个命令的回调域书写代码逻辑。

        我们最终的目标是替换文本,设计的流程图如下,总共需要三个步骤。

        这里就可以进行编码,其中vscode的工具对象中有很多子对象,window就是其中之一,window中的activeTextEditor是专用于获取编辑器选中文本的变量。更多用法可以查阅官方api文档,做vscode开发更多是成为一名api调用工程师。【官方api文档】

const disposable = vscode.commands.registerCommand('plugin.helloWorld', function () {
    // 调用vscode中的工具对象
    const editor = vscode.window.activeTextEditor;
    if (!editor) {
        vscode.window.showErrorMessage('未识别到文本框');
        return;
    }
    if (editor.selection.isEmpty) {
        vscode.window.showErrorMessage('请选择要识别的代码');
        return;
    }
    // 获取编辑区选中的代码片段
    const text = editor.document.getText(editor.selection);
    const varReg = /变量/g;
    // 代码片段回插到编辑区中
    const rebackString = JSON.stringify(text.replace(varReg, 'var'));
    // 调用edit的写入api将代码片段回插到编辑区中
    editor.edit(build => {
        build.replace(editor.selection, JSON.parse(rebackString));
    });
    vscode.window.showInformationMessage('Hello World from myPlugin!');
});

        进行保存后,我们点击一下刷新的按钮对编写的插件重新编译。

        再回到调试窗口,尝试一下刚才的指令,到此,我们实现了变量关键词替换的这个功能。

打包发布

        完成了插件业务逻辑的书写,最终一定是要投入使用,否则插件的开发将毫无意义。首先需要安装vsce,vsce是vscode extension的缩写,可用于插件的打包和发布,在命令行执行npm install -g vsce。

npm install -g vsce

        完成安装后,需要执行执行vsce package命令进行打包。

vsce package

⚠️注意,此处可能会有以下两个坑。

坑1-版本不对称:

因为@types/vscode和engines.vscode版本不兼容,而且在vscode应用版本之上,导致无法兼容。

解决方案:

        将engines.vscode和@types/vscode的值都改为"^1.32.0",删除node_modules,使用npm install重新安装依赖。 

坑2-README.md文档报错:

解决方案:

将After writing up...之前的This is the README for your extension "plugin".删除,再打包即可。

        解决报错,打包成功之后,可以看到目录中出现了一个vsix格式的产物,这就是打包后的vscode插件。

        进入到vscode中,点击插件->更多->从VSIX安装,选中刚才生成的vsix产物,就成功加载插件,可以在正常开发中使用。

        到此,已经完成了vscode插件从创建->开发->发布的闭环,再进一步可以发布到插件市场,供其他开发者在线下载。(团队内部正常使用,非开源情况下其实并不需要)【插件市场】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

划雨悦潭之赋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值