747 字
2 分钟
vscode插件开发初涉
开发环境
-
Nodejs
-
vscode
-
Yeoman&generator-code
为了方便生成插件项目的基础结构,可以使用 Yeoman 以及 VSCode 官方提供的插件生成器。打开终端,输入以下命令全局安装:
npm install -g yo generator-code
插件初始框架
创建插件
yo code生成器会询问以下问题:
- **选择扩展类型**:例如“New Extension (TypeScript)”或者“New Extension (JavaScript)”。- **扩展名称、描述**:根据提示填写想要的扩展名称和描述信息。- **Git 初始化**:是否初始化 Git 仓库。- **包管理器**:选择使用 npm 或 yarn。生成完成后,会得到一个初步搭建好的项目结构。
理解结构
打开生成的项目,会看到一些重要的文件和目录:
-
package.json这个文件定义了扩展的基本信息、依赖以及 VSCode 的激活事件和命令注册。
例如:
{"name": "my-sample-extension","displayName": "My Sample Extension","description": "A simple VSCode extension.","version": "0.0.1","engines": {"vscode": "^1.60.0"},"activationEvents": ["onCommand:extension.helloWorld"],"main": "./out/extension.js","contributes": {"commands": [{"command": "extension.helloWorld","title": "Hello World"}]},"scripts": {"vscode:prepublish": "npm run compile","compile": "tsc -p ./"},"devDependencies": {"typescript": "^4.0.0","vscode": "^1.1.37","@types/node": "^12.0.0"}} -
src/extension.ts****(或extension.js)这是扩展的入口文件,当扩展被激活时会运行这里的代码。
例如,一个简单的示例:
import * as vscode from 'vscode';export function activate(context: vscode.ExtensionContext) {console.log('Congratulations, your extension "my-sample-extension" is now active!');let disposable = vscode.commands.registerCommand('extension.helloWorld', () => {vscode.window.showInformationMessage('Hello World from your VSCode extension!');});context.subscriptions.push(disposable);}export function deactivate() {}
运行和调试
- 打开项目后,在 VSCode 的调试面板中,可以看到一个
Launch Extension的配置。 - 按下
F5,VSCode 将启动一个新的扩展开发主机(Extension Development Host)。 - 在新的窗口中,通过命令面板(
Ctrl+Shift+P或Cmd+Shift+P)输入注册的命令,比如输入 “Hello World” 来测试扩展是否正常工作。
发布插件
当开发完成并测试好之后,可以考虑将插件发布到 VSCode Marketplace 供其他人使用:
-
安装
vsce工具帮助打包和发布扩展:npm install -g vsce -
在项目根目录下运行打包命令:
vsce package -
根据 官方文档 的指引,完成发布流程。
具体开发
插件启动
VSCode 扩展通过 package.json 中的 activationEvents 数组来定义何时激活扩展。以下是主要的激活事件类型:
常用激活事件
- 在 VSCode 启动时立即激活扩展- 优点:扩展始终可用- 缺点:会影响 VSCode 的启动性能,不推荐用于生产环境2. onStartupFinished
- 在 VSCode 完成启动后激活扩展
- 比 * 稍晚激活,但对启动性能影响较小
3. onCommand
其他激活事件
- onUri
- 当打开特定 URI 时激活扩展
- 例如:onUri:https://my-extension.com
- onWebviewPanel
- 当创建特定类型的 webview 面板时激活扩展
- onCustomEditor
- 当打开自定义编辑器时激活扩展
- onDebug
- 当启动调试会话时激活扩展
- onDebugInitialConfigurations
- 当初始化调试配置时激活扩展
- onDebugResolve
- 当解析特定类型的调试配置时激活扩展
- onFileSystem
- 当访问特定文件系统方案时激活扩展
- 例如:onFileSystem
- onTerminalProfile
- 当创建特定终端配置文件时激活扩展
- onAuthenticationRequest
- 当请求特定身份验证提供程序时激活扩展
- onSearch
- 当执行搜索操作时激活扩展
- onTaskType
- 当执行特定类型的任务时激活扩展
- onNotebook
- 当打开特定类型的笔记本时激活扩展
- onTerminal
- 当创建终端时激活扩展
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
vscode插件开发初涉
https://dreaife.tokyo/vscode-plugin-dev/ 部分信息可能已经过时
相关文章 智能推荐
1
docker初识
研习 Docker 入门指南:理解容器与虚拟机的差异,掌握镜像、容器、Docker Hub、数据卷和 Docker Compose 的基础操作与部署流程。
2
区块链认识
研习 从区块结构、分布式账本与共识机制理解区块链,梳理交易上链流程、去中心化与不可篡改特性,以及加密货币、供应链等应用和扩展性挑战。
3
svn使用
研习 SVN 入门指南:理解集中式版本控制与仓库结构,掌握 checkout、update、commit、diff、revert、ignore、分支管理及 TortoiseSVN 基础用法。
4
missing-semester-class01
研习 Missing Semester Shell 入门笔记,涵盖程序执行、路径导航、文件权限、管道与输入输出重定向、root 权限,并附 Bash 命令示例和练习。
5
csapp 第一章 计算机系统漫游
研习 《深入理解计算机系统》第一章笔记:从信息表示和编译系统出发,串联处理器、缓存、操作系统、进程、虚拟内存、并发与抽象等核心概念。





