前言
清明节后,新项目提测,技术这边除了解决产品、测试提出的问题外,还是挺有空的。荒废了几天后的今天,突然想到博客貌似好久没更新,打开一看,最近一篇居然是4个月前的,还只是篇关于工具调试方面的小记录而已。赶紧打开代码,选个题材,立志今天要撸一篇完整的文档更新上线。
想了下,过完年后回来干了啥,要选什么题材呢,最后决定写自己在年后尝试写的vsCode小插件。
先聊聊编译器,vsCode
是众多编译器中比较受欢迎的其中一种,上学时大家对代码还是很懵的,只知道Dreamweaver这种可以界面操作的工具,总的来说没有一个Web编辑软件能像 Dreamweaver
一样,具有所见即所得的功能,你可以在窗体中调整参数,即刻看到它的改变,Dreamweaver会自动生成HTML文件格式,供欲览,以便开发人员进一步调整。在初期,大部分基础前端应该都了解文本编辑器 Sublime Text
,简洁又轻便,再加上它的快捷键是真的无敌呀,在这点上,vsCode是比不上Sublime的。后面随着潮流,大家都用上了vsCode,在某些方面,它是优于sublime的,主要体现在编译器里融合了命令行工具,支持 GIT 版本管理,支持第三方扩展。
vsCode的第三方扩展因为开放性的特性所以特别强大,任何人有好的idea都能自己写个插件共享大家。
接下来我们要说的就是如何在vsCode中有属于自己的第三方扩展。
开发环境介绍与安装
首先我们先需要一个生产基本插件代码的工具,那就是Yeoman 和 VS Code Extension generator,VS Code Extension generator
详细的介绍了如何从安装generator-code开始到有一个完整的Extension,总的来说API很友好。
根据官网api提示,确保安装了Node.js的条件下,在我们的 cmd
输入以下命令全局安装 yo
和 generator-code
:
1 | $ npm install -g yo generator-code |
在完成上面的安装后,可以通过输入以下命令来生成我们要的基本代码:
1 | $ yo code |
根据提示选择创建项目的配置类型.
- 选择Typescript还是Javascript类型的项目
- 输入你扩展的名称
- 输入一个标志(项目创建的文件名称用这个)
- 输入对这个扩展的描述
- 输入以后要发布用到的一名称(和以后再发布时候有一个名字是对应上的)
- 要不要创建一个git仓库用于版本管理
提示你全部生成完毕,运行 npm install
来安装你的项目依赖。
1 | ├── .gitignore //配置不需要加入版本管理的文件 |
运行与简单修改
介绍完目录结构后,我们可以来运行一下看看效果如果。我们打开一个vscode并把我们的sample目录自己拖拉到vscode的界面上,然后选择调试窗口,并点击开始调试。
项目运行起来后,会调用一个新的vscode窗口在标题栏的地方显示一个 [扩展开发主机]
的标题,然后这个窗口是支持我们刚才运行的插件项目的命令。
我们可以看到扩展插件已经正常的运行了,接下来我们可以来简单修改一下代码以实现不同的简单功能。在修改之前需要简单的认识两个文件:
package.json
1 | { |
extension.ts
1 | 'use strict'; |
这两个文件是很重要的,基本整个插件编写都是围绕着这两个文件来修改的,例如我们现在要增加多一个命令叫做 Hello Sample
那么我们先在 package.json
里面添加两个配置。
1 | ... |
添加完这两个配置后,我们就需要在 extension.ts 里来注册这个命令事件:
1 | let disposable = vscode.commands.registerCommand('extension.sayHello', () => { |
修改完代码后,再次运行效果如下图:
打包与发布
vsce
依旧,官网中也提到如何将扩展打包发布,以便其他人可以查找,下载和使用您的扩展程序或者打包成可安装的 VSIX
格式.并与他人分享。
vsce
是 Visual Studio Code Extensions
的缩写,是用于打包,发布和管理vsCode扩展的命令行工具。
1 | $ npm install -g vsce |
您可以使用vsce它轻松打包和发布扩展程序:
1 | $ cd sample |
生成的 vsix
就是我们打包好的插件安装包,只要将其拖到vsCode的窗口上,即会提示你安装成功重启 vsCode
,重启restate后便能使用扩展中的命令.而且在插件的目录下也多了对应sample的目录。
vsce
还可以搜索,获取元数据和取消发布扩展。有关所有可用 vsce
命令的参考,请运行vsce --help
。
Publishing extensions
官网中介绍到如果你想将自己写的扩展分享给更多的人使用就要注册Azure DevOps organization的账号.
具体发布步骤根据官网提示顺序操作即可。