实现一个VSCode插件(从创建到发布)

embedded/2025/1/13 10:03:44/

实现一个自己的VSCode 插件

  • 本文将以 yo 为例, 实现一个 VS Code 插件 从创建到发布。

    文章目录

    • 实现一个自己的VSCode 插件
        • 1. 初始化项目
        • 2. 项目结构
        • 3. 实现插件功能
        • 4. 测试和运行插件
        • 5. 发布
        • 6. 下载自己发布的插件

1. 初始化项目

  1. 首先,我们需要安装 VS Code 扩展生成器
npm install -g yo generator-code
  1. 安装完 yo 后,生成初始模版
yo code
  • 然后我们会填写 扩展名,描述,语言等
  • 我们以语言选择: TypeScript , 打包选择:webpack 为例。

2. 项目结构

case-converter/
├── package.json
├── src/
│   └── extension.ts
├── .vscodeignore
└── README.md

3. 实现插件功能

  • 我们只需要修改2文件的内容
  • 以实现一个转化大小写的功能为例子
  1. 修改 extension.ts =>
import * as vscode from 'vscode';export function activate(context: vscode.ExtensionContext) {// 注册转换大写命令let toUpperCommand = vscode.commands.registerCommand('case-converter.toUpperCase', () => {const editor = vscode.window.activeTextEditor;if (editor) {const selection = editor.selection;const text = editor.document.getText(selection);editor.edit(editBuilder => {editBuilder.replace(selection, text.toUpperCase());});}});// 注册转换小写命令let toLowerCommand = vscode.commands.registerCommand('case-converter.toLowerCase', () => {const editor = vscode.window.activeTextEditor;if (editor) {const selection = editor.selection;const text = editor.document.getText(selection);editor.edit(editBuilder => {editBuilder.replace(selection, text.toLowerCase());});}});context.subscriptions.push(toUpperCommand, toLowerCommand);
}export function deactivate() {}
  1. 修改 package.json => 主要替换 activationEventscontributes
{// 省略其他配置 。。。"activationEvents": ["onCommand:case-converter.toUpperCase","onCommand:case-converter.toLowerCase"],"contributes": {"commands": [{"command": "case-converter.toUpperCase","title": "Convert to Uppercase"},{"command": "case-converter.toLowerCase","title": "Convert to Lowercase"}],"keybindings": [{"command": "case-converter.toUpperCase","key": "ctrl+shift+u","mac": "cmd+shift+u"},{"command": "case-converter.toLowerCase","key": "ctrl+shift+l","mac": "cmd+shift+l"}],"menus": {"editor/context": [{"when": "editorHasSelection","command": "case-converter.toUpperCase","group": "1_modification"},{"when": "editorHasSelection","command": "case-converter.toLowerCase","group": "1_modification"}]}},
}

4. 测试和运行插件

  1. 可以通过 package.json 中的 npm run compile 然后 npm run watch 打开调试;
  2. 也可以通过 直接 F5 直接 进行调试;
  3. 然后我们会看到调试按钮, 以及弹出另外一个调试的 VS Code 窗口
    在这里插入图片描述
  4. 我们在另外弹出的 VS Code 窗口里 测试一下
    在这里插入图片描述
  5. 我们可以看到 package.json 中配置到 toUpperCasetoLowerCase , 选中文案点击便可实现插件功能

5. 发布

  1. 创建 Azure 账号(如果有账号跳过)
    • 先去 创建 Azure 账号和 Azure DevOps 组织 => 点击跳转

    • 登录后创建项目

      在这里插入图片描述

    • 然后右上角创建在这里插入图片描述

  • 创建时选择 Marketplace 勾选 ✓ Acquire ✓ Publish ✓ Manage
    在这里插入图片描述
    2. 第二步 去创建 Visual Studio Marketplace 账号
    • 直接通过 微软 Azure 账号登陆
    • 设置名称 和 id (后边上传时 要检查 package.json 中的 publisher 是否相同)
      在这里插入图片描述
  1. 第三部上传

    • 方法1 : 安装 npm install -g @vscode/vsce
    • 然后打包 执行打包命令 vsce package => 生成 .vsix 文件
    • 然后点击 New extension 选择 Visual Studio Code 弹出弹窗 把 .vsix 上传即可
      在这里插入图片描述
    • 方法2 : 通过 vsce 命令完成, 登陆会填写 token (token 为 Azure 创建的 token)
    # 打包插件
    vsce package
    # 发布插件
    vsce publish
    # 创建发布者
    vsce create-publisher (publisher name)
    # 登录
    vsce login (publisher name)
    

6. 下载自己发布的插件

  • 发布完,过几分钟后就可以去, 搜索自己发布的插件了
  • 然后下载使用
    在这里插入图片描述

http://www.ppmy.cn/embedded/153526.html

相关文章

openGauss 创建数据库

a. 使用如下命令创建一个新的表空间tpcds_local。 CREATE TABLESPACE tpcds_local RELATIVE LOCATION tablespace/tablespace_1 ; openGauss# CREATE TABLESPACE tpcds_local RELATIVE LOCATION tablespace/tablespace_1 ; CREATE TABLESPACE openGauss# b. 使用如下命令创…

前端开发:快速生成框架

html 标签是整个 html 文件的根标签 ( 最顶层标签 ):告诉浏览器,从这就开始html内容分析了 head 标签中写页面的属性 . title 标签中写的是页面的标题 body 标签中写的是页面上显示的内容 head和body是兄弟标签; head和title是父子标签…

作业(一)

1、shell 脚本写出检测 /tmp/size.log 文件如果存在显示它的内容,不存在则创建一个文件将创建时间写入。 # vim a.sh#!/bin/bash​#先对文件/tmp/size.log 是否存在进行判断 if [ -f /tmp/size.log ]; #如果存在,则用cat命令显示文件内容thencat /tmp/…

torch.einsum计算张量的外积

torch.einsum 是一种强大的张量操作工具,可以通过爱因斯坦求和约定(Einstein summation convention)来简洁地表示复杂的张量运算。通过它,我们可以高效地计算矩阵乘法、转置、点积、外积等操作。 以下是关于如何使用 torch.einsum 计算两个四维张量在第三维度上的外积的解…

【C语言】_类型重命名typedef关键字

目录 1. 从复杂类型理解类型重命名的必要性 1.1 示例1 1.2 示例2 2. typedef 用法 2.1 简单类型重命名 2.2 复杂指针类型重命名 2.2.1 数组指针类型 2.2.2 函数指针类型 3. 使用typedef简化复杂类型的定义 4. #define与typedef 1. 从复杂类型理解类型重命名的必要性 …

Single Agent 阶段性总结

Agent 通常指的是一类具备高度自主性的智能实体,它们能够巧妙地在特定环境里自主感知信息,运用内置的智能算法做出理性决策,进而精准无误地执行相应动作。相较于 RAG(检索增强生成)技术,Agent 可解决诸多难…

【广西乡镇界】arcgis格式shp数据乡镇名称和编码2020年内容测评

【广西乡镇界】arcgis格式shp数据乡镇名称和编码2020年内容测评

[JavaEE] Spring IoCDI

目录 一、IoC 1.1 IoC 概念 1.2 IoC的作用 二、DI 2.1 DI 概念 2.2 属性注入(Field Injection) 2.3 构造方法注入(Constructor Injection) 2.4 Setter 注入(Setter Injection) 2.5 三种注入优缺点分析 2.5.1 属性注入 2.5.2 构造函数注入 2.5.3 Setter 注入 三、IoC…