VSCode插件开发学习

news2024/12/26 20:54:45

一、环境准备

0、参考文档:VS Code插件创作中文开发文档

1、大于18版本的nodejs

2、安装Yeoman和VS Code Extension Generator:

npm install -g yo generator-code

3、生成脚手架

yo code

选择内容:

? What type of extension do you want to create? New Extension (TypeScript)
? What's the name of your extension
? HelmRender
? What's the identifier of your extension? helmrender
? What's the description of your extension? helm render tool
? Initialize a git repository? Yes
? Bundle the source code with webpack? Yes
? Which package manager to use? npm

4、完成项目初始化

(1)打开项目执行 npm -i 安装依赖

(2)点击运行调试

image.png

(3)在弹出的另一个vscode实例,叫扩展开发宿主,上执行调试插件。在扩展开发宿主上按下 shift+ctrl+p 弹出命令面板输入Hello World命令,底部就会出现 Hello World from HelloWorld! 的通知。

image.png

 

image.png

(4)可以通过打断点的方式进行调试

二、项目结构

1、插件运作方式

Hello World插件包含了3个部分:

  • 注册onCommand 激活事件: onCommand:extension.helloWorld,所以用户可以在输入Hello World命令后激活插件。

  • 使用contributes.commands 发布内容配置,绑定一个命令ID extension.helloWorld,然后 Hello World命令就可以在命令面板中使用了。

  • 使用commands.registerCommand VS Code API 将一个函数绑定到你注册的命令IDextension.helloWorld上。

理解下面三个关键概念你才能作出一个基本的插件:

  • 激活事件: 插件激活的时机。

  • 发布内容配置: VS Code扩展了 package.json 插件清单的字段以便于开发插件。

  • VS Code API: 你的插件代码中需要调用的一系列JavaScript API。

2、插件目录结构

.
├── .vscode
│   ├── launch.json     // 插件加载和调试的配置
│   └── tasks.json      // 配置TypeScript编译任务
├── .gitignore          // 忽略构建输出和node_modules文件
├── README.md           // 一个友好的插件文档
├── src
│   └── extension.ts    // 插件源代码
├── package.json        // 插件配置清单
├── tsconfig.json       // TypeScript配置

(1)插件清单

每个VS Code插件都必须包含一个package.json,它就是插件的配置清单。

  • name 和 publisher: VS Code 使用<publisher>.<name>作为一个插件的ID。你可以这么理解,Hello World 例子的 ID 就是vscode-samples.helloworld-sample。VS Code 使用 ID 来区分各个不同的插件。

  • main: 插件的主入口。

  • activationEvents 和 contributes: 激活事件 and 发布内容配置。

  • engines.vscode: 描述了这个插件依赖的最低VS Code API版本。

  • postinstall 脚本: 如果你的engines.vscode声明的是1.25版的VS Code API,那它就会按照这个声明去安装目标版本。一旦vscode.d.ts文件存在于node_modules/vscode/vscode.d.ts,IntelliSense就会开始运作,你就可以对所有VS Code API进行定义跳转或者语法检查了。

(2)插件入口文件

插件入口文件会导出两个函数,activate 和 deactivate,你注册的激活事件被触发之时执行activatedeactivate则提供了插件关闭前执行清理工作的机会。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1614199.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【1524】java投票管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java 投票管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

ESG热潮背后

近年来&#xff0c;ESG投资在全球范围内迅速发展&#xff0c;已经成为行业新风口。越来越多的投资者和企业开始关注ESG因素&#xff0c;并将其纳入投资决策和公司运营中。 ESG指环境&#xff08;Environmental&#xff09;、社会&#xff08;Social&#xff09;、公司治理&…

揭秘!综合布线可视化管理软件如何助力集成商实现价值飞跃?

一、弱电集成商发展现状 近期小编通过与多家做弱电集成的朋友交流探讨了解到目前弱电集成商发展如同2024年国内大部分企业一样举步维艰&#xff0c;当然也有个别企业做的项目优质并且利润可观&#xff0c;但是整体不多&#xff0c;总结原因主要有以下几点&#xff1a; 工程项目…

Robbins-Monro(RM)算法【随机近似】

强化学习笔记 主要基于b站西湖大学赵世钰老师的【强化学习的数学原理】课程&#xff0c;个人觉得赵老师的课件深入浅出&#xff0c;很适合入门. 第一章 强化学习基本概念 第二章 贝尔曼方程 第三章 贝尔曼最优方程 第四章 值迭代和策略迭代 第五章 强化学习实践—GridWorld 第…

C语言枚举类型详解

下午好诶&#xff0c;今天小眼神给大家带来一篇C语言枚举类型详解的文章~ 目录 一、枚举类型的声明 二、枚举类型的优点 三、枚举类型的使用 一、枚举类型的声明 枚举顾名思义就是 一 一 列 举 。 比如&#xff1a; 一周从周一到周日共有七天&#xff0c;可以一一列举。 性…

ARM汇编伪指令AREA

ARM伪指令AREA用于定义一个代码段或数据段。其基本的语法格式如下&#xff1a; AREA 段名 属性1,属性2, ... 其中&#xff1a; 段名&#xff1a;是你为代码段或数据段指定的名称。如果段名以数字开头&#xff0c;则该段名需要用“│”括起来&#xff0c;如│1_test│。段名可…

文档在线预览,可以私有化局域网在服务器部署组件来实现在线预览

去官网查看 几行代码即可运行 https://kkfileview.keking.cn/zh-cn/index.html

引用静态方法

import java.util.Arrays; import java.util.Comparator;public class demo1 {//引用public static void main(String[] args) {Integer []arr{1,2,4,3,8,6};//匿名内部类Arrays.sort(arr, new Comparator<Integer>() {Overridepublic int compare(Integer o1, Integer o…

深度神经网络(DNN)

通过5个条件判定一件事情是否会发生&#xff0c;5个条件对这件事情是否发生的影响力不同&#xff0c;计算每个条件对这件事情发生的影响力多大&#xff0c;写一个深度神经网络&#xff08;DNN&#xff09;模型程序,最后打印5个条件分别的影响力。 示例 在深度神经网络&#xf…

葡萄书--深度学习基础

卷积神经网络 卷积神经网络具有的特性&#xff1a; 平移不变性&#xff08;translation invariance&#xff09;&#xff1a;不管检测对象出现在图像中的哪个位置&#xff0c;神经网络的前面几层应该对相同的图像区域具有相似的反应&#xff0c;即为“平移不变性”。图像的平移…

OJ:寻找独一无二的数

目录 &#x1f3dd;1.问题描述&#xff1a; &#x1f3dd;2.分析问题&#xff1a; &#x1f3dd;3.最终代码&#xff1a; &#x1f3dd;1.问题描述&#xff1a; &#x1f3dd;2.分析问题&#xff1a; 先看看下面的代码的结果是多少&#xff1f; #include<stdio.h> in…

深度学习之视觉特征提取器——VGG系列

VGG 提出论文&#xff1a;1409.1556.pdf (arxiv.org) 引入 距离VGG网络的提出已经约十年&#xff0c;很难想象在深度学习高速发展的今天&#xff0c;一个模型能够历经十年而不衰。虽然如今已经有VGG的大量替代品&#xff0c;但是笔者研究的一些领域仍然有大量工作选择使用VG…

多商户入驻型AI智能名片预约服务系统:掀起服务行业数字化革命狂潮!

多商户入驻型AI智能名片预约服务系统以其高效、便捷、智能的特点&#xff0c;成为服务行业数字化转型的重要推手。该系统通过整合线上线下资源&#xff0c;利用人工智能和大数据技术&#xff0c;为商户和消费者搭建了一个无缝对接的预约服务平台。商户可以轻松入驻系统&#xf…

【Java框架】SpringMVC(一)——基本的环境搭建及基本结构体系

目录 MVC模式视图(View)控制器(Controller)模型(Model)JSP Model1JSP Model2MVC的优点MVC的缺点 Spring MVC架构介绍特点 SpringMVC环境搭建(在前面Spring整合Mybatis的基础上)1.创建控制器Controller2.创建springmvc配置文件&#xff0c;并添加Controller的Bean3.web.xml中配置…

通用大模型研究重点之五:model services

Trtion https://github.com/openai/triton https://www.nvidia.cn/gpu-cloud/ngc-nvidia-triton/ https://github.com/openai/openai-cookbook https://github.com/openai/openai-python Triton 是一个由 NVIDIA 开发的开源推理服务平台&#xff0c;旨在简化和优化生产环境中的…

windows11 iis10中.net4.5不能用解决方法

问题iis设置4.0后运行程序提示web.config配置错误 解决方法&#xff1a; 管理员身份运行命令提示符分别运行如下命令&#xff1a; dism /online /enable-feature /featurename:IIS-ISAPIFilter dism /online /enable-feature /featurename:IIS-ISAPIExtensions dism /onli…

模拟量和开关量傻傻分不清?戳这文

在电子工程中&#xff0c;模拟量和开关量是最基本的信号类型&#xff0c;但它们在表示和处理方式上有着显著的不同。对于初入行的电子工程师来说&#xff0c;很容易混淆这两者。本文将用简洁明了的方式解释这两种信号类型&#xff0c;让你轻松掌握它们的区别。 1、模拟量 模拟…

js作业微博发言

微博 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible" content&q…

三款热门婴儿洗衣机深度测评,希亦、觉飞、RUUFFY谁更好用?

近几年科技高速发展&#xff0c;我们的生活也因此变得更加便捷、健康高效。尤其是在家庭生活中&#xff0c;各种新兴家电的出现让我们的生活变得更加健康卫生。婴儿洗衣机也为现代家庭提供了极大的便捷。由于婴儿刚出生免疫力比较弱&#xff0c;所以建议婴儿的衣物尽量和大人的…

在C#中,PDFsharp库使用(三):PDF提取

PDF提取 一、PDF提取功能&#xff0c;看图 二、PDF提取界面 三、PDF提取代码 //pdf提取---选择文件Button private void button9_Click(object sender, EventArgs e) {string oneFilePath GetOneFilepath();if (!string.IsNullOrEmpty(oneFilePath)){textBox3.Text oneFilePa…