用官方工具创建第一个 Hello World 扩展
这一页开始进入真正的实操。我们不再停留在“扩展能做什么”的概念层面,而是直接使用微软官方提供的脚手架工具,生成一个可以运行、可以调试、也可以继续改造的 Hello World 扩展示例。
完成本页后,你会得到这些结果:
- 知道如何安装 VS Code 扩展官方脚手架
- 能用
yo code创建一个 TypeScript 扩展项目 - 看懂生成后的基础目录结构
- 能在 VS Code 中启动扩展调试宿主并执行
Hello World命令
先准备好这些环境
开始之前,请先确认本机已经具备以下环境:
- 已安装 Visual Studio Code
- 已安装 Node.js LTS 版本
- 能在终端里正常使用
npm - 建议提前安装
pnpm,本文示例会选择它作为包管理器
如果你还没有安装 pnpm,可以先执行:
安装微软官方脚手架
VS Code 扩展最常见的官方初始化方式,是使用微软维护的 generator-code,它通过 yo code 命令交互式生成项目骨架。
先在终端执行:
安装完成后,你就可以通过下面的命令创建扩展项目:
用 yo code 创建 Hello World 项目
执行 yo code 后,终端会进入一组交互式问题。对于第一个练手项目,建议按下面的思路来选择:
What type of extension do you want to create?选择New Extension (TypeScript)What's the name of your extension?建议填写helloworldWhat's the identifier of your extension?可以继续填写helloworldWhat's the description of your extension?可以填写My first VS Code extensionInitialize a git repository?建议选择YesWhich bundler to use?选择esbuildWhich package manager to use?本文示例选择pnpm
下面这两张图可以帮助你建立直观印象:第一张展示的是 yo code 的交互式创建过程,第二张展示的是项目生成完成并自动安装依赖后的结果。
需要注意的是,generator-code 的问题顺序、默认值和具体文案可能会随着版本变化而略有不同,所以这里的截图更适合作为流程参考,而不是逐项严格对照。


为什么建议这样选
TypeScript:官方示例最完整,后续学习资料也最多esbuild:构建速度快,后面调试和打包体验更顺手pnpm:安装速度快、磁盘占用更友好,适合后面管理更多示例项目
一个常见提示
如果你在安装依赖后看到了类似下面的提示:
这通常不是项目创建失败,而是 pnpm 出于安全策略拦截了部分构建脚本。后续如果你遇到构建异常,可以按提示执行:
然后允许 esbuild 的相关脚本执行。
生成后的项目长什么样
项目创建完成后,你会看到一个类似下面的目录结构:

第一次接触扩展开发时,不需要把所有文件都看懂,先抓住这几个最关键的入口即可:
package.json:扩展清单,声明命令、激活事件、显示名称、构建脚本等src/extension.ts:扩展主入口,真正的业务代码通常从这里开始src/test/extension.test.ts:自动化测试示例.vscode/launch.json:调试配置,按F5时会用到vsc-extension-quickstart.md:脚手架自动生成的官方说明
先理解这两个核心文件
对于 Hello World 示例来说,最值得先看的其实只有两个文件:package.json 和 src/extension.ts。
package.json 在做什么
这个文件不是普通的 Node.js 项目配置那么简单。对于 VS Code 扩展来说,它还是一份“扩展声明文件”,里面通常会定义:
- 扩展名称、版本、描述
- 激活事件
activationEvents - 命令列表
contributes.commands - 构建、编译、测试脚本
也就是说,命令为什么会出现在命令面板里,扩展会在什么时候被加载,很多信息都不是写在业务代码里,而是先声明在 package.json 里。
src/extension.ts 在做什么
脚手架生成的 Hello World 示例,会在这里完成一件非常重要的事:注册命令。
它的基本思路是:
- 扩展被激活
- 调用
vscode.commands.registerCommand(...) - 注册一个命令处理函数
- 当你从命令面板执行该命令时,弹出一个提示消息
你现在不用急着完全记住 API 细节,只需要先建立一个最小认知:
运行这个 Hello World 扩展
创建完项目后,接下来请用 VS Code 打开这个新生成的扩展目录,然后执行下面的步骤:
- 打开项目根目录
- 按
F5 - 等待 VS Code 启动一个新的“扩展开发宿主”窗口
- 在新窗口中按
Ctrl+Shift+P - 搜索并执行
Hello World
如果一切正常,你会看到一个消息提示,内容类似:
到这里为止,你已经真正跑通了第一个 VS Code 扩展。
这一步背后到底发生了什么
很多初学者第一次跑通后,虽然看到了弹窗,但并不知道它为什么能工作。你可以先用下面这条链路理解:
package.json中声明了一个命令package.json中还声明了与这个命令相关的激活时机- 你在调试宿主里执行命令时,VS Code 激活扩展
src/extension.ts中的activate()被调用- 命令注册成功
- 命令执行后弹出提示
这一条链路非常重要。后面无论你是做 Webview、Tree View、状态栏按钮还是语言功能,本质上都离不开“声明 + 激活 + 实现 + 调试验证”这套基础工作流。
现在你最应该改哪里
跑通默认示例后,推荐你马上做两个最小修改,帮助自己真正理解项目结构:
修改提示文案
打开 src/extension.ts,把默认的提示文本改成你自己的内容,例如:
再次按 F5 启动调试宿主,然后重新执行命令,确认修改已经生效。
修改命令标题
打开 package.json,找到 contributes.commands,你会看到类似 Hello World 的命令标题。把它改成更容易识别的名字,例如:
这样你再次打开命令面板时,就能明显感受到:命令的展示名称来自 package.json,而不是来自 extension.ts。
这一页学到的核心内容
如果你刚完成了上面的操作,至少已经建立了这几个非常关键的基础认知:
- VS Code 扩展可以通过微软官方脚手架快速生成
- 第一个示例项目并不复杂,核心入口只有
package.json和src/extension.ts - 扩展开发不是“改完代码直接运行网页”,而是通过调试宿主验证功能
- 一个命令能跑起来,依赖的是“声明、激活、实现、调试”整条链路都正确
下一步
建议你接下来继续做两件事:
- 回头再看一次 概述页面,把今天跑通的 Hello World 放进整体知识地图里理解
- 进入后续 API 文档,重点先学习命令、激活事件、贡献点和调试相关内容