0

0

怎么做VSCode扩展_VSCode开发自定义插件的入门与实践教程

蓮花仙者

蓮花仙者

发布时间:2025-08-26 14:10:02

|

877人浏览过

|

来源于php中文网

原创

怎么做vscode扩展_vscode开发自定义插件的入门与实践教程

简而言之,开发VSCode扩展就是利用VS Code提供的API,定制或增强其功能,以满足特定开发需求。 这需要你熟悉TypeScript(推荐)或JavaScript,理解VS Code的扩展API,并掌握一定的调试技巧。

解决方案

VSCode扩展开发的核心在于理解和使用VS Code提供的API。 这些API允许你访问和修改VS Code的各种行为,例如编辑器的行为、用户界面、文件系统等。

如何开始一个VSCode扩展项目?

首先,你需要安装Node.js和npm(Node Package Manager)。 然后,全局安装Yeoman和VS Code扩展生成器:

npm install -g yo generator-code

接下来,使用生成器创建一个新的扩展项目:

yo code

生成器会提示你选择扩展类型(例如,JavaScript或TypeScript),并设置一些基本信息,如扩展名称、描述等。 选择TypeScript通常是更好的选择,因为它提供了类型检查和更好的代码组织。

创建项目后,你会得到一个包含

package.json
src/extension.ts
(或
src/extension.js
)等文件的目录。
package.json
定义了扩展的元数据和依赖项,
src/extension.ts
是扩展的主要入口点。

extension.ts
文件里有什么?

extension.ts
文件包含两个重要的函数:
activate
deactivate

activate
函数在扩展激活时被调用。 你可以在这里注册命令、事件监听器和其他需要在扩展运行时执行的操作。

deactivate
函数在扩展停用时被调用。 你可以在这里清理资源、取消注册事件监听器等。

一个简单的

activate
函数可能如下所示:

import * as vscode from 'vscode';

export function activate(context: vscode.ExtensionContext) {

    // 使用控制台输出诊断信息 (console.log) 和错误 (console.error)
    // 此代码将在你的扩展激活时执行
    console.log('Congratulations, your extension "my-extension" is now active!');

    // 注册一个命令
    // 命令ID必须在package.json文件中声明
    let disposable = vscode.commands.registerCommand('my-extension.helloWorld', () => {
        // 每次执行命令时都会显示一个消息框
        vscode.window.showInformationMessage('Hello World from my-extension!');
    });

    context.subscriptions.push(disposable);
}

export function deactivate() {}

这段代码注册了一个名为

my-extension.helloWorld
的命令。 当用户执行这个命令时(例如,通过命令面板),会显示一个包含“Hello World from my-extension!”的消息框。

如何调试VSCode扩展?

VS Code提供了强大的调试功能,可以让你轻松调试扩展。

Llama Coder
Llama Coder

Llama Coder 是一个AI驱动的代码生成工具,可以一键生成完整的应用程序

下载
  1. 在VS Code中打开你的扩展项目。
  2. 切换到“运行和调试”视图(可以通过点击侧边栏的调试图标或按下
    Ctrl+Shift+D
    打开)。
  3. 点击“创建配置文件”按钮,选择“Node.js”环境。 这会创建一个
    .vscode/launch.json
    文件。
  4. 修改
    .vscode/launch.json
    文件,确保
    program
    属性指向你的
    extension.ts
    (或
    extension.js
    )文件编译后的JavaScript文件(通常在
    out
    目录下)。 例如:
{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Launch Extension",
            "program": "${workspaceFolder}/out/extension.js",
            "preLaunchTask": "npm: compile", // 确保在调试前编译代码
            "outFiles": [
                "${workspaceFolder}/out/**/*.js"
            ],
            "sourceMaps": true,
            "runtimeExecutable": "${execPath}",
            "args": [
                "--extensionDevelopmentPath=${workspaceFolder}"
            ]
        }
    ]
}

确保

preLaunchTask
属性设置为
npm: compile
,这样在调试前会自动编译你的TypeScript代码。

现在,你可以点击“启动调试”按钮(绿色箭头)来启动调试会话。 VS Code会启动一个新的VS Code实例,并在其中加载你的扩展。 你可以在你的代码中设置断点,并逐步执行代码,查看变量的值,等等。

如何发布VSCode扩展?

发布VS Code扩展需要以下步骤:

  1. 创建一个Azure DevOps组织: 如果你还没有Azure DevOps组织,你需要创建一个。 这是微软提供的代码托管和构建服务。
  2. 安装
    vsce
    工具
    vsce
    (Visual Studio Code Extensions) 是一个用于打包、发布和管理VS Code扩展的命令行工具。 使用npm全局安装它:
npm install -g vsce
  1. 登录到Azure DevOps: 使用
    vsce
    登录到你的Azure DevOps组织:
vsce login

按照提示进行身份验证。

  1. 修改
    package.json
    确保你的
    package.json
    文件包含正确的元数据,例如
    name
    displayName
    description
    version
    publisher
    等。
    publisher
    必须是你的Azure DevOps组织的名称。
{
    "name": "my-extension",
    "displayName": "My Extension",
    "description": "A simple VS Code extension",
    "version": "0.0.1",
    "publisher": "your-azure-devops-organization"
    // ...
}
  1. 打包扩展: 使用
    vsce package
    命令打包你的扩展:
vsce package

这会创建一个

.vsix
文件,其中包含你的扩展的所有文件。

  1. 发布扩展: 使用
    vsce publish
    命令发布你的扩展:
vsce publish

vsce
会将
.vsix
文件上传到VS Code Marketplace。 你需要等待一段时间,直到你的扩展被审核通过并发布。

VSCode扩展开发中常见的坑有哪些?

  • API版本不兼容: VS Code的API会不断更新,因此你需要确保你的扩展使用的API版本与VS Code的版本兼容。 你可以在
    package.json
    文件中指定你的扩展支持的VS Code版本范围:
{
    "engines": {
        "vscode": "^1.60.0" // 仅支持 VS Code 1.60.0 及以上版本
    }
}
  • 内存泄漏: 如果你的扩展注册了大量的事件监听器或创建了大量的对象,并且没有及时清理它们,可能会导致内存泄漏。 确保在扩展停用时清理所有资源。
  • 异步操作处理不当: VS Code的API很多都是异步的,因此你需要正确处理异步操作。 使用
    async/await
    Promise
    来避免回调地狱。
  • 权限问题: 你的扩展可能需要访问文件系统、网络等资源。 确保你的扩展声明了正确的权限,并且用户授予了这些权限。
  • 调试困难: VS Code扩展的调试可能会比较困难,特别是当你的扩展涉及到复杂的逻辑或与其他扩展交互时。 熟练掌握VS Code的调试工具,并学会使用
    console.log
    输出调试信息。

如何在VSCode扩展中实现代码片段功能?

代码片段(Code Snippets)是VS Code中非常实用的功能,可以帮助开发者快速插入常用的代码块。 你可以通过创建一个

.code-snippets
文件来定义代码片段。

  1. 创建
    .code-snippets
    文件:
    在你的扩展项目的根目录下创建一个
    snippets
    目录(如果还没有),并在其中创建一个
    .code-snippets
    文件。 文件的名称可以自定义,例如
    my-snippets.code-snippets
  2. 定义代码片段:
    .code-snippets
    文件中,使用JSON格式定义你的代码片段。 每个代码片段都包含一个名称、一个前缀(用于触发代码片段)和一个正文(代码片段的内容)。
{
    "Print to console": {
        "prefix": "log",
        "body": [
            "console.log('$1');",
            "$2"
        ],
        "description": "Log output to console"
    },
    "Create a function": {
        "prefix": "func",
        "body": [
            "function $1($2) {",
            "\t$3",
            "}"
        ],
        "description": "Create a new function"
    }
}
  • prefix
    :当你在编辑器中输入
    log
    func
    时,VS Code会显示相应的代码片段。
  • body
    :代码片段的内容。 使用
    $1
    $2
    等占位符来表示光标的位置。 用户可以使用
    Tab
    键在占位符之间切换。
  • description
    :代码片段的描述,会在VS Code的建议列表中显示。
  1. package.json
    中声明代码片段文件:
    package.json
    文件中,使用
    contributes.snippets
    属性声明你的代码片段文件:
{
    "contributes": {
        "snippets": [
            {
                "language": "javascript", // 指定代码片段适用的语言
                "path": "./snippets/my-snippets.code-snippets" // 代码片段文件的路径
            }
        ]
    }
}

确保

language
属性与你的代码片段适用的语言匹配。

现在,当你打开一个JavaScript文件,并输入

log
func
时,VS Code会显示相应的代码片段。

如何在VSCode扩展中添加自定义设置?

VS Code允许扩展添加自定义设置,用户可以在VS Code的设置界面中配置这些设置。

  1. package.json
    中定义设置:
    package.json
    文件中,使用
    contributes.configuration
    属性定义你的设置。
{
    "contributes": {
        "configuration": {
            "title": "My Extension", // 设置组的标题
            "properties": {
                "my-extension.enableFeature": { // 设置的唯一ID
                    "type": "boolean", // 设置的类型 (boolean, string, number, etc.)
                    "default": true, // 设置的默认值
                    "description": "Enable or disable the feature" // 设置的描述
                },
                "my-extension.apiUrl": {
                    "type": "string",
                    "default": "https://example.com/api",
                    "description": "The API URL"
                }
            }
        }
    }
}
  • title
    :设置组的标题,会在VS Code的设置界面中显示。
  • properties
    :一个包含所有设置的对象的属性。
  • 每个设置都包含一个唯一的ID(例如,
    my-extension.enableFeature
    ),一个类型(例如,
    boolean
    string
    number
    ),一个默认值和一个描述。
  1. 在代码中访问设置: 使用
    vscode.workspace.getConfiguration()
    函数来访问设置。
import * as vscode from 'vscode';

export function activate(context: vscode.ExtensionContext) {
    let config = vscode.workspace.getConfiguration('my-extension'); // 获取名为 'my-extension' 的配置

    let enableFeature = config.get<boolean>('enableFeature'); // 获取 'enableFeature' 设置的值
    let apiUrl = config.get<string>('apiUrl'); // 获取 'apiUrl' 设置的值

    console.log('Enable Feature:', enableFeature);
    console.log('API URL:', apiUrl);
}

vscode.workspace.getConfiguration()
函数返回一个
vscode.WorkspaceConfiguration
对象,你可以使用它的
get()
方法来获取设置的值。

现在,用户可以在VS Code的设置界面中配置你的扩展的设置。 你的扩展可以根据这些设置来调整其行为。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

19

2026.02.13

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

441

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

544

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

321

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

81

2025.09.10

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

750

2023.08.02

java中boolean的用法
java中boolean的用法

在Java中,boolean是一种基本数据类型,它只有两个可能的值:true和false。boolean类型经常用于条件测试,比如进行比较或者检查某个条件是否满足。想了解更多java中boolean的相关内容,可以阅读本专题下面的文章。

360

2023.11.13

java boolean类型
java boolean类型

本专题整合了java中boolean类型相关教程,阅读专题下面的文章了解更多详细内容。

37

2025.11.30

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

283

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
go语言零基础开发内容管理系统
go语言零基础开发内容管理系统

共34课时 | 2.6万人学习

第二十三期_前端开发
第二十三期_前端开发

共98课时 | 7.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号