mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
802 字
3 分钟
vscode插件开发初涉
2025-03-13

<synced_block url=“https://app.notion.com/p/1b55465cca17808d8be3e99dd76eae9f#1b55465cca1780a787d9e7389de5525f”> # 开发环境 1. Nodejs 2. vscode 3. Yeoman&generator-code 为了方便生成插件项目的基础结构,可以使用 Yeoman 以及 VSCode 官方提供的插件生成器。打开终端,输入以下命令全局安装: bash npm install -g yo generator-code # 插件初始框架 ## 创建插件 bash yo code 生成器会询问以下问题: - 选择扩展类型:例如“New Extension (TypeScript)”或者“New Extension (JavaScript)”。 - 扩展名称、描述:根据提示填写想要的扩展名称和描述信息。 - Git 初始化:是否初始化 Git 仓库。 - 包管理器:选择使用 npm 或 yarn。 生成完成后,会得到一个初步搭建好的项目结构。 ## 理解结构 打开生成的项目,会看到一些重要的文件和目录: - package.json 这个文件定义了扩展的基本信息、依赖以及 VSCode 的激活事件和命令注册。 例如: ```json { “name”: “my-sample-extension”, “displayName”: “My Sample Extension”, “description”: “A simple VSCode extension.”, “version”: “0.0.1”, “engines”: { “vscode”: “^1.60.0” }, “activationEvents”: [ “onCommand.helloWorld” ], “main”: ”./out/extension.js”, “contributes”: { “commands”: [ { “command”: “extension.helloWorld”, “title”: “Hello World” } ] }, “scripts”: { “vscode”: “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`****)**
这是扩展的入口文件,当扩展被激活时会运行这里的代码。
例如,一个简单的示例:
```typescript

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](https://marketplace.visualstudio.com/vscode) 供其他人使用: - 安装 `vsce` 工具帮助打包和发布扩展: bash npm install -g vsce - 在项目根目录下运行打包命令: bash vsce package ``` - 根据 官方文档 的指引,完成发布流程。 # 具体开发 ## 插件启动 VSCode 扩展通过 package.json 中的 activationEvents 数组来定义何时激活扩展。以下是主要的激活事件类型: ### 常用激活事件 1. - 在 VSCode 启动时立即激活扩展 - 优点:扩展始终可用 - 缺点:会影响 VSCode 的启动性能,不推荐用于生产环境 2. onStartupFinished - 在 VSCode 完成启动后激活扩展 - 比 * 稍晚激活,但对启动性能影响较小 3. onCommand - 当用户执行特定命令时激活扩展 - 例如:onCommand.helloWorld 4. onLanguage - 当打开特定语言的文件时激活扩展 - 例如:onLanguage, onLanguage 5. onView - 当特定视图可见时激活扩展 - 例如:onView ### 其他激活事件 1. onUri - 当打开特定 URI 时激活扩展 - 例如:onUri:https://my-extension.com 2. onWebviewPanel - 当创建特定类型的 webview 面板时激活扩展 3. onCustomEditor - 当打开自定义编辑器时激活扩展 4. onDebug - 当启动调试会话时激活扩展 5. onDebugInitialConfigurations - 当初始化调试配置时激活扩展 6. onDebugResolve - 当解析特定类型的调试配置时激活扩展 7. onFileSystem - 当访问特定文件系统方案时激活扩展 - 例如:onFileSystem 8. onTerminalProfile - 当创建特定终端配置文件时激活扩展 9. onAuthenticationRequest - 当请求特定身份验证提供程序时激活扩展 10. onSearch - 当执行搜索操作时激活扩展 11. onTaskType - 当执行特定类型的任务时激活扩展 12. onNotebook - 当打开特定类型的笔记本时激活扩展 13. onTerminal - 当创建终端时激活扩展 </synced_block>

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

vscode插件开发初涉
https://dreaife.tokyo/vscode-plugin-dev/
作者
dreaife
发布于
2025-03-13
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

相关文章 智能推荐
1
本人在x的一些关于市场认识的总结
market 从复杂系统与博弈论出发,梳理市场运行、情绪反身性与货币价值共识的内在逻辑,帮助读者穿透短期波动,建立对市场预期与通胀传导的深层认知。
2
关于EOA钱包在链上的基础操作
WEB3 快速掌握Web3钱包在链上的核心操作。内容涵盖EOA与HD钱包的创建原理、助记词生成与BIP派生流程,深入剖析SIWE和EIP-712链上验证,以及交易构造、签名、广播的完整周期,助你理清钱包底层逻辑。
3
一个对于EOA的EVM钱包登陆界面
WEB3 本篇博客详尽阐述了一个基于前端实现的 EO A(Externally Owned Account)钱包登录界面,包括整体流程、技术选型与实现细节。文章首先介绍了登录的双重交互:先获取用户钱包地址,再通过 SIWE(Sign‑In with Ethereum)协议发送带有 nonce、时间戳等信息的认证消息,要求用户在钱包中签名。随后,作者展示了使用 wagmi 库的关键代码片段——从 connect、useAccount 获取钱包信息,到 useSignMessage 发起签名请求,再通过后端 /api/auth/verify 验证签名的完整实现。文中还简要解释了 EOA 私钥、公钥、地址生成及 ECDSA(secp256k1)签名原理,帮助读者理解安全性背后的数学基础。最后,作者以个人学习体会收尾,强调该项目是其区块链开发的入门实践,为后续更复杂的链上交互奠定了基础。
4
关于一次EOA钱包的签名验证及其相关内容
WEB3 本篇文章深入解析了以太坊 EOA 钱包一次签名验证的完整流程与背后数学原理。首先回顾了 secp256k1 曲线的有限域 Fₚ、椭圆曲线点群 E(Fₚ) 以及基点 G 与其阶 n 的基本概念,详细说明了点加法、点倍加和标量乘法的模 p 与模 n 计算方式。随后,文章通过实际的 SIWE(Sign‑In with Ethereum)场景,逐步展示了钱包在收到签名请求后如何生成 r/s/v 三元组,包括哈希计算、随机数 k 的生成、R 点的求取以及 r、s、v 的具体公式。接着,服务端如何利用已知的 r、s、v、消息哈希 e 和基点 G 逆向求解公钥 Q 的公式 Q = r⁻¹(sR − eG) 进行验证,并通过 keccak‑256 取后 20 字节得到钱包地址,实现无私钥泄露的所有权确认。文章还指出了 p 与 n 的区别、椭圆曲线离散对数问题的计算难度(约 2¹²⁸)以及当前量子计算对该安全性的潜在影响。整体内容为开发者提供了从理论到实现的完整参考,适合作为博客 SEO 摘要,提升相关关键词(如 “EOA 钱包签名验证”“secp256k1”“ECDSA”“SIWE”)的搜索可见性。
5
博客迁移-Mizuki配置记录
infra 从notionNext迁移到mizuki的过程记录,主要原因是notionNext的限制。选择mizuki是因为其轻量级和良好的功能平衡,支持日记和项目展示。配置过程简单,内容通过md和ts文件控制,同时实现了与bangumi API的连接。计划通过CI同步notion内容,并进行多语言适配,解决了图片链接过期的问题。

目录