如何开发一个 VSCode 插件
创作时间:
作者:
@小白创作中心
如何开发一个 VSCode 插件
引用
CSDN
1.
https://blog.csdn.net/hawk2014bj/article/details/139535303
如何开发一个 VSCode 插件?本文将通过开发一个简单的 "Hello World" 插件,带你了解 VSCode 插件开发的基本流程。
1. 安装脚手架
首先,我们需要使用 Yeoman 和 generator-code 工具来创建一个新的 VSCode 扩展项目。在命令行中运行以下命令:
npx --package yo --package generator-code -- yo code
根据提示选择插件开发语言为 TypeScript,并完成项目的基本配置:
- 项目名称:Hello
- 项目标识符:hello
- 项目描述:first ext
- 是否初始化 Git 仓库:No
- 打包工具选择:unbundled
- 包管理器选择:yarn
2. 打开插件开发目录
项目创建完成后,会在当前目录下生成一个扩展项目文件夹。主要文件包括:
extension.js:插件的主文件入口
点击运行(F5),然后通过 ⇧⌘P 输入 "Hello",点击 "Hello World",你会在屏幕右下角看到 "Hello World from Hello!" 的提示信息。
3. 插件核心概念
在开发 VSCode 插件时,需要理解以下几个核心概念:
- Activation Events:激活事件决定了何时激活你的插件。你可以在
package.json文件中的activationEvents字段中指定这些事件。 - Contribution Points:贡献点可以理解为要扩展 VSCode 的哪个组件,例如上面的例子就是扩展 VSCode 的命令列表,在列表中添加一项。
- VS Code API:插件可以调用 VSCode 的 API,例如注册命令 ID。
4. 添加菜单
很多 VSCode 插件都会在左侧添加一个菜单按钮。下面的代码展示了如何实现这一功能:
4.1 添加图标配置
在 package.json 中添加以下配置:
"contributes": {
"viewsContainers": {
"activitybar": [
{
"id": "helloWorldSidebar",
"title": "Hello World",
"icon": "resources/milktea.png"
}
]
},
"views": {
"helloWorldSidebar": [
{
"id": "helloWorldView",
"name": "Hello World View"
}
]
},
"commands": [
{
"command": "hello.helloWorld",
"title": "Hello World"
}
]
}
4.2 点击菜单后,打开窗口的定义
在 src 目录下创建 helloWorldViewProvider.ts 文件,添加以下代码:
import * as vscode from 'vscode';
export class HelloWorldViewProvider implements vscode.TreeDataProvider<HelloWorldItem> {
private _onDidChangeTreeData: vscode.EventEmitter<HelloWorldItem | undefined | void> = new vscode.EventEmitter<HelloWorldItem | undefined | void>();
readonly onDidChangeTreeData: vscode.Event<HelloWorldItem | undefined | void> = this._onDidChangeTreeData.event;
getTreeItem(element: HelloWorldItem): vscode.TreeItem {
return element;
}
getChildren(element?: HelloWorldItem): Thenable<HelloWorldItem[]> {
return Promise.resolve(this.getHelloWorldItems());
}
private getHelloWorldItems(): HelloWorldItem[] {
return [
new HelloWorldItem('Item 1', vscode.TreeItemCollapsibleState.None),
new HelloWorldItem('Item 2', vscode.TreeItemCollapsibleState.None)
];
}
refresh(): void {
this._onDidChangeTreeData.fire();
}
}
class HelloWorldItem extends vscode.TreeItem {
constructor(
public readonly label: string,
public readonly collapsibleState: vscode.TreeItemCollapsibleState
) {
super(label, collapsibleState);
this.tooltip = `${this.label}`;
this.description = this.label;
}
}
4.3 入口文件注册窗口 View
在 src/extension.ts 文件中添加以下代码:
const helloWorldViewProvider = new HelloWorldViewProvider();
vscode.window.registerTreeDataProvider('helloWorldView', helloWorldViewProvider);
总结
开发 VSCode 插件时,根据需要进行对应的扩展(贡献点),随后对不同的 Command 进行业务功能开发,例如命令点击、菜单点击等等。
热门推荐
500ml是1斤吗 两者应该如何换算
厨房与超市中的单位换算:理解升与公斤之间的奥秘与应用
肠癌早期不痛不痒,出现这些症状,及时筛查!正确预防肠癌!
南极点:地球最冷之地的探索与揭秘
社保认证全攻略:三种认证方式及手机操作步骤详解
社保卡人脸认证不通过怎么办?多种解决方案帮你轻松应对
在建工程施工期间消防安全要点
马远《寒江垂钓图》:留白的艺术
柳宗元在永州的孤独岁月:《江雪》意境分析
老年抑郁症患者的流行病学与治疗现状
历史与艺术的交织:纣王如何从毁誉参半,变成《封神》中的暴君?
如何更换沃尔沃S90的遥控电池
从《狂飙2》看高启强的逆袭之路:权力、欲望与人性的较量
当一个人没钱的时候怎么办:实用建议与鼓励
如何应对资金紧张时的财务规划
黄金牛市背后的推手:全球央行增持潮解析
美联储加息预期下的金价波动:影响机制与未来展望
金价狂飙背后的多重机遇与挑战
黄金在经济危机中的避险作用:历史回顾与展望
怎么缓解抑郁情绪
城市化浪潮下的水温危机:挑战与应对之道
云初:一个充满诗意与希望的名字
从“日名制”到“托尼”:中国名字里的文化传承
“云初”:国风热潮中的文化传承
当心!Meme币投资中的PUA陷阱
狗狗币爆红背后:Meme币如何运作?
空军航空大学淄博校区:科技创新引领地方经济腾飞
这份铁路安全知识教育普及请收藏
普洱茶晒青工艺详解:从采摘到成品的全过程
普洱茶杀青工艺详解:原理、功效及重要性