778 字
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 的启动性能,不推荐用于生产环境
- onStartupFinished
- 在 VSCode 完成启动后激活扩展
- 比 * 稍晚激活,但对启动性能影响较小
- onCommand
- 当用户执行特定命令时激活扩展
- 例如:onCommand
.helloWorld
- onLanguage
- 当打开特定语言的文件时激活扩展
- 例如:onLanguage
, onLanguage
- onView
- 当特定视图可见时激活扩展
- 例如:onView
其他激活事件
- 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/cn/posts/vscode-plugin-dev/ 部分信息可能已经过时
相关文章 智能推荐
1
新时代的第一轮筛选
life 随着AI技术的发展,使用先进模型的成本可能导致社会分层,只有经济能力强的人才能使用这些模型。虽然当前价格尚可,但未来价格的上涨可能使大多数人无法承担,从而形成第一轮筛选。作者对这种现象感到焦虑,同时也意识到AI的应用已超越编程领域,进入更广泛的产业。面对新世界的挑战与机遇,个人在时代的推动下不断探索。
2
博客迁移-Mizuki配置记录
infra 从notionNext迁移到mizuki的过程记录,主要原因是notionNext的限制。选择mizuki是因为其轻量级和良好的功能平衡,支持日记和项目展示。配置过程简单,内容通过md和ts文件控制,同时实现了与bangumi API的连接。计划通过CI同步notion内容,并进行多语言适配,解决了图片链接过期的问题。
3
心理记录1
psycho 意识到自己在抑制情感,反思过去的生活习惯导致对外界的恐惧和内心的静止。希望通过与世界的互动找到真实的自我,面对选择方向的责任感和可能性丢失的恐惧。真正的自我需要在探索中形成,而选择未来的方向意味着放弃其他可能性。
4
初涉正则表达式
prog-side 正则表达式是一种强大的文本模式匹配工具,能够描述和匹配字符串的特定模式。它包括字面值字符、特殊字符、字符类和元字符等元素,广泛应用于多种编程语言和文本处理工具中。正则表达式可以用于验证数据、替换文本和提取子字符串,具有灵活性和强大功能。常见的元字符和特性包括字符匹配、量词、边界匹配和分组等,能够帮助用户高效处理文本数据。
5
rabbitMQ初识
middle-side RabbitMQ是一个消息队列,支持同步和异步通讯,异步通讯通过中间人Broker解耦合,提升吞吐量和故障隔离。RabbitMQ的安装可通过Docker完成,支持多种消息模型,包括工作队列、发布/订阅和路由。SpringAMQP简化了RabbitMQ的使用,提供自动声明队列和异步接收消息的功能。消息转换器可使用JSON格式以提高可读性和效率。





