[关闭]
@Dale-Lin 2021-01-06T22:58:26.000000Z 字数 1694 阅读 763

VS Code 插件开发入门

VSCode开发


概述

VSCode 内置了扩展能力,从UI到编辑体验,几乎任何部分都能通过扩展(Extension) API 自定义和增强。

extensions 能做什么

开发配置

脚手架 yeoman 可以根据一些命令行交互直接生成一个 demo 插件:

  1. $ yo code

进入脚手架搭好的项目,用 VS Code 打开:

  1. $ code .

在 VS Code 中按 F5,将插件代码进行编译,并在一个新的 Extension Development Host 窗口中运行。

在插件开发窗口命令行(Ctrl+Shift+p)中输入 Hello World 命令,触发插件提示。

在 VS Code 中对代码打断点即可进行调试。

扩展剖析

package.json

插件项目 package.json 的 main 字段指定了入口文件,如果项目使用 ts 的话,需要指向 tsc 编译后的 js 文件。
其中还需要关注两个字段:

部分 package.json 内容如下:

  1. {
  2. "name": "demo-sample",
  3. "displayName": "demo-sample",
  4. "description": "",
  5. "version": {
  6. "vscode": "^1.52.0"
  7. },
  8. "categories": [
  9. "Other"
  10. ],
  11. "activationEvnets": [
  12. "onCommand:demo-sample.countingNumbers"
  13. ],
  14. "main": "./out/extension.js",
  15. "contributes": {
  16. "commands": [
  17. {
  18. "command": "demo-sample.countingNumbers",
  19. "title": "Count Nums"
  20. }
  21. ]
  22. },
  23. }

activationEvents 中指定了触发插件的事件和命令 id,contributes 中指定了贡献点和命令设置,在启用插件的 command palette 中输入 title 即可触发命令事件,也可以直接输入 command 的内容来触发。

入口文件

入口文件中引入 vscode API 编写处理程序:

  1. import * as vscode from 'vscode'
  2. // activate 方法会在插件第一次被事件激活的时候执行
  3. // 且只会执行一次
  4. export function activate(context: vscode.ExtensionContext) {
  5. console.log('Congratulations, you extension is now active!');
  6. // 使用 vscode API 注册命令
  7. // 需要命令id和一个回调函数
  8. let disposable = vscode.commands.registerCommand('demo-sample.countingNumbers', () => {
  9. vscode.window.showWarningMessage('3 2 1...');
  10. });
  11. context.subscriptions.push(disposable)
  12. }
  13. // deactivate 方法会在插件 deactivate 的时候执行,可以做一些清理工作
  14. // deactivate 包括 VSCode 关闭、插件被停用、插件被卸载时三种情况
  15. // 若是异步操作,需要返回一个 Promise
  16. export function deactivate() {}
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注