@Dale-Lin
2021-01-06T22:58:26.000000Z
字数 1694
阅读 763
VSCode开发
VSCode 内置了扩展能力,从UI到编辑体验,几乎任何部分都能通过扩展(Extension) API 自定义和增强。
npm i -g yo
npm i -g generator-code
脚手架 yeoman 可以根据一些命令行交互直接生成一个 demo 插件:
$ yo code
进入脚手架搭好的项目,用 VS Code 打开:
$ code .
在 VS Code 中按 F5,将插件代码进行编译,并在一个新的 Extension Development Host 窗口中运行。
在插件开发窗口命令行(Ctrl+Shift+p)中输入 Hello World 命令,触发插件提示。
在 VS Code 中对代码打断点即可进行调试。
插件项目 package.json 的 main 字段指定了入口文件,如果项目使用 ts 的话,需要指向 tsc 编译后的 js 文件。
其中还需要关注两个字段:
部分 package.json 内容如下:
{
"name": "demo-sample",
"displayName": "demo-sample",
"description": "",
"version": {
"vscode": "^1.52.0"
},
"categories": [
"Other"
],
"activationEvnets": [
"onCommand:demo-sample.countingNumbers"
],
"main": "./out/extension.js",
"contributes": {
"commands": [
{
"command": "demo-sample.countingNumbers",
"title": "Count Nums"
}
]
},
}
activationEvents
中指定了触发插件的事件和命令 id,contributes
中指定了贡献点和命令设置,在启用插件的 command palette 中输入 title 即可触发命令事件,也可以直接输入 command 的内容来触发。
入口文件中引入 vscode API 编写处理程序:
import * as vscode from 'vscode'
// activate 方法会在插件第一次被事件激活的时候执行
// 且只会执行一次
export function activate(context: vscode.ExtensionContext) {
console.log('Congratulations, you extension is now active!');
// 使用 vscode API 注册命令
// 需要命令id和一个回调函数
let disposable = vscode.commands.registerCommand('demo-sample.countingNumbers', () => {
vscode.window.showWarningMessage('3 2 1...');
});
context.subscriptions.push(disposable)
}
// deactivate 方法会在插件 deactivate 的时候执行,可以做一些清理工作
// deactivate 包括 VSCode 关闭、插件被停用、插件被卸载时三种情况
// 若是异步操作,需要返回一个 Promise
export function deactivate() {}