当前位置: 首页 > article >正文

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

实现一个自己的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.kler.cn/a/504347.html

相关文章:

  • 4种革新性AI Agent工作流设计模式全解析
  • 最左前缀匹配原则
  • FFmpeg开发笔记(七)欧拉系统编译安装FFmpeg
  • java导出pdf文件
  • 《机器学习》——贝叶斯算法
  • 【Spring Boot 应用开发】-04-01 自动配置-数据源-连接池
  • android 内存泄露实战分析
  • 台湾省村里边界2018年4月更新arcgis数据shp格式内容分析测评
  • Unity ShaderGraph中Lit转换成URP的LitShader
  • 【数学】概率论与数理统计(四)
  • docker run一个镜像如何指定最大可使用的内存大小、cpu大小
  • 一.项目课题 <基于TCP的文件传输协议实现>
  • Linux下杂项设备驱动的编写
  • Elasticsearch技术标准解析与实践案例
  • 软路由如何实现电脑手机一机一IP
  • springboot 根据UUID生成唯一的短链接
  • 如何学好数据结构?
  • 大数据原生集群 (Hadoop3.X为核心) 本地测试环境搭建二
  • 如何备考PostgreSQL中级认证
  • 统计有序矩阵中的负数
  • STM32第6章、WWDG
  • linux stdout/stderr重定向到文件,>或tee
  • 小结:华为交换机常用的操作指令
  • 43.Textbox的数据绑定 C#例子 WPF例子
  • Spring MVC复杂数据绑定-绑定数组
  • 13:00面试,13:08就出来了,问的问题有点变态。。。