vscode-插件开发-hello world-创建初始模板

news2025/1/26 15:25:02

参考vscode官方示例:如何创建你的第一个插件开发项目模板的步骤进行了下文操作。

目录

  • 前言
  • 1.环境配置
    • 全局安装 `yo`, `generator-code`
  • 2. 新建一个插件项目模板
    • 问题1: F5 按键无法启动launch.json调试(解决)
      • 问题1 描述:
      • 问题1: 找错误
      • 问题1: 可行的解决方案
  • 3. 开发插件(添加自定义功能)

前言

使用vscode脚手架,来生成插件模板工程,也有一些意想不到的漏洞。 可能我姿势不对,创建一个新的extension项目开发插件,无法正常调试debug??? F5都摁烂了.

1.环境配置

2024.4月配置

  • vscode版本: 1.88.0
  • nodejs版本: Node.js v20.12.11 with long-term support.
    要开发vscode插件,可以直接使用官方提供的脚手架,免去配置的麻烦.

全局安装 yo, generator-code

npm install -g yo generator-code

2. 新建一个插件项目模板

安装好脚手架后,可以使用 yo创建vscode插件项目.

yo code 

在这里插入图片描述

我在创建的模板extension, 在yo code之后, 选了这些选项

? What type of extension do you want to create?     New Extension (TypeScript)
? What's the name of your extension?                testccc
? What's the identifier of your extension?          testccc
? What's the description of your extension?         不想描述
? Initialize a git repository?                      No
? Bundle the source code with webpack?              No 
? Which package manager to use?                     npm

然后按照vscode官方创建第一个extension插件的操作步骤,遇到了如下问题

  • F5摁烂了, 没点反应, launch.json中debug任务没有启动
  • 但是,可以通过运行 package.json中的一些系列scripts,并无异常.
  • 然后我就很奇怪, 如何进入进入调试模式,开发我的第一个插件?
  • 接着,我看了yo code生成项目中 .vscode/tasks.json, .vscode/launch.json 发现一些小问题?不清楚啊,官方自动生成的,应该不会错吧. 可这个前置任务就是运行不了

所以有了:

问题1: F5 按键无法启动launch.json调试(解决)

问题1 描述:

  • F5按键对应的就是 debug插件内,这个Run Extension的动作,而我这边按下去错误,无法运行npm,点击这边的绿色UI按钮任然也是同样问题.
    在这里插入图片描述

问题1: 找错误

留意了一下按下F5时, output的输出, 没注册的npm类型任务???
emm, 我寻思着我也装好了 检测 tasks的插件, 也配好了npm的环境变量,vscode里面我也设置了npm的路径. 问题出在哪?
在这里插入图片描述
看到output有了那么点思路,但不多.

在这里插入图片描述
那就先去看一遍插件项目中 .vscode/tasks.json, .vscode/launch.json

  • 项目的.vscode/launch.json如下

在这里插入图片描述
根据output的错误信息提示,应该是我的 tasks.json 中默认的 类型为npm构建任务没启动导致的错误

  • 进一步, 错误对应的正是 "preLaunchTask": "${defaultBuildTask}"未能正常启动, 也就是.vscode/tasks.json中的这个默认构建任务有问题:
    在这里插入图片描述

到这里,思路就清晰了。
因为launch.json仅仅只是调试任务,不包括编译构建任务,所以需要有个preLaunchtask 调试前戏任务。两者合二为一,即为compile and debug操作,也就是先编译,再debug。

两种方案,
方案一:
虽然编译任务有那么点问题跑不起来,那我们就在launch.json直接注释掉这个前置任务,将编译任务和debug调试任务分开。
使用run task插件先运行npm run compile编译ts脚本为js脚本; 然后再F5启动调试任务。
缺点很明显,本来我一个F5能干的一条龙服务,被割裂开成为两步,每次改了ts源码还得留心编译一遍,刷新项目,不然跑的就是旧的js代码。 所以我还是不这么做。

方案二:
修改tasks.json,让既定的任务正常运行,发挥该有的功能即可。
先看看tasks.json哪里报了问题。

在这里插入图片描述

发现.vscode/tasks.json中两个不恰当的地方, emm, 这是vscode脚手架自己生成的项目,.居然无法开箱即用。不管怎么说,找到问题了

问题1: 可行的解决方案

ps(不清楚是否通用,个人方案)

  • 修改后的 .vscode/tasks.json
{
	"version": "2.0.0",
	"tasks": [
		{
            
            "label": "任务npm",
			"type": "shell", //直接在默认shell里面,用npm执行操作
            "command":"npm",
            "args": ["run", "watch"], 
            /*  实际执行的指令也就是 " npm run watch ",什么作用?  
                检测tsscript文件变化,更新传递给调试窗口,检查语法错误,
                大概是这么个意思, 综合了我ctguer的猜测,与通义千问的回答
                */
			"problemMatcher": "$tsc-watch",
			"isBackground": true,
			"presentation": {
				"reveal": "never"
			},
			"group": {
				"kind": "build",
				"isDefault": true
			}
		}
	]
}

好了,问题基本解决.这下我按下 F5就可以正常启动,调试插件项目了.

在插件调试窗口随便操作一下, 可以看到 debug信息在DEBUG_CONSOLE窗口正常输出;
在这里插入图片描述
并且,terminal终端内,也提示启动了 任务npm, 可以检测到ts文件变动, 方便重启调试流程,检测语法报错
在这里插入图片描述
在这里插入图片描述
删除多余的–,没错误后,
点击绿色的圆圈重启调试, 进入调试窗口, ctrl shift p,执行 Hello World指令, 看到了弹窗提示,总算成功了.
在这里插入图片描述
那么,我的第一个vscode插件模板项目就创建好了,成功hello world了.

3. 开发插件(添加自定义功能)

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

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

相关文章

Linux部署sonarqube+Gogs+Jenkins(二)

Linux部署sonarqubeGogsJenkins 一、Jenkins执行任务1、使用源码管理拉取代码-操作步骤第一步:确认环境,进入到Jenkins【系统管理】—>【全局工具配置】—>【Git】为下图显示;第二步:构建项目时对项目的源码管理选择 Git第三…

基于R语言地理加权回归、主成份分析、判别分析等空间异质性数据分析教程

原文链接:基于R语言地理加权回归、主成份分析、判别分析等空间异质性数据分析教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247600473&idx6&sn431e9408a42862d29fe4f4ef7703595b&chksmfa8208becdf581a820d9479d2aa61b88e96612c4ab72b0…

系统架构评估_2.SAAM方法

SAAM(Scenarios-based Architecture Analysis Method)是卡耐基梅隆大学软件工程研究所(SEI at CMU)的Kazman等人于1983年提出的一种非功能质量属性的架构分析方法,是最早形成文档并得到广泛使用的软件架构分析方法。最…

设计方案:914-基于64路AD的DBF波束形成硬件

一、硬件概述 DBF技术的实现全部是在数字域实现,然而天线阵列接收的信号经过多次混频后得到的中频信号是模拟信号,实现DBF处理并充分发挥DB&…

pdf操作器(图片转文字、PDF转word、PDF拆分、图片jpg、png互转)

pdf操作器(不用联网图片转文字、PDF转word、PDF拆分、图片jpg、png互转)介绍目前该软件实现了以下功能 pdf转wordpdf拆分图片,图片导出在桌面的一个文件夹里图片合并为pdf压缩、转换图片格式(jpg和png)OCR图片转文字&…

如何在社交媒体中使用增强现实来提高客户参与度?

目录 1. 增强现实在社交媒体中的应用是如何发展的 2. 社交媒体营销和广告中的增强现实 3. 社交媒体上的增强现实滤镜和镜头 4. 社交媒体平台上的增强现实购物 5. 利用社交媒体的增强现实事件和品牌激活 6. 增强现实在社交媒体中的未来是什么 7. 社交媒体中的增强现实常见…

xilinx 7系列fpga上电配置

一、前言 Xilinx FPGA通过加载比特流到内部存储单元来进行配置。 Xilinx FPGA存在两种数据配置路径,一种是满足最小引脚需求的串行路径,一种是可用8位、16位或32位来连接到行业的高性能通用接口,如处理器,8位或者16位并行的闪存…

轻量化日志中心 Grafana Loki

需要集中的日志系统的原因 目前现状,每个服务生产上有三台,定位生产问题,需要连上一台机器,然后使用 cd / tail / less / grep / sed / awk 等 linux命令去日志里查找故障原因。如果在这台机器没搜索到线索,就去另外两台机器上查日志。 但在分布式系统中,众多服务分散部…

链路代价信息、链路状态信息(链路状态通告LSA)

链路代价信息"link cost information" 通常指的是**在网络中,数据包从一个节点传输到另一个节点所需承担的“成本”或者“开销”,这个概念常用于路由算法和网络设计中**。以下是一些关键要点: 1. **路径开销**:路径开…

吹爆!遥感高光谱分类(Python)

目录 一、数据集下载 二、安装包 三、数据处理 四、模型训练 五、模型推理 六、踩坑记录 一、数据集下载 Hyperspectral Remote Sensing Scenes - Grupo de Inteligencia Computacional (GIC) (ehu.eus) Installing SPy — Spectral Python 0.21 documentation 二、安装…

企业计算机服务器中了locked勒索病毒怎么办,locked勒索病毒解密流程步骤

网络技术的不断发展为企业的生产运营提供了极大便利,也让企业的生产效率大大提高,但网络是一把双刃剑,给给企业的数据安全问题带来严重威胁。近期,云天数据恢复中心接到浙江某商贸公司的求助,企业计算机服务器遭到了lo…

HBase详解(2)

HBase 结构 HRegion 概述 在HBase中,会从行键方向上对表来进行切分,切分出来的每一个结构称之为是一个HRegion 切分之后,每一个HRegion会交给某一个HRegionServer来进行管理。HRegionServer是HBase的从节点,每一个HRegionServ…

阿里云乱扣费故障,技术堪忧

2024年4月3日,距离2023年11月的故障没有多久,阿里云又出现乱扣费故障,导致账号欠费3000多,oss,块存储,cdn等所有后付费服务停止工作,不知道这个故障能算什么级别的。 凌晨1点多,收到…

RStudio数据分析及简单作图

R语言是一种用于统计计算与绘图的编程语言,它免费、开源,被广泛应用于统计分析、数据挖掘等领域。是应用于统计计算和统计制图的优秀工具。 完整代码放在最后 一、数据收集 所使用数据下载自GEO(https://www.ncbi.nlm.nih.gov/geoprofiles/)网站&…

开源免费的MySQL和MariaDB图形化管理软件

2024年4月7日,周日凌晨 有很多开源免费的MySQL和MariaDB图形化管理界面可供选择。 以下是一些常用的工具: phpMyAdmin:phpMyAdmin 是一个用 PHP 编写的免费开源的 MySQL 和 MariaDB 管理工具,它提供了一个基于 Web 的界面&#…

GPT-5将在6月发布前进行「红队进攻测试」

“GPT-5将在6月发布”的消息刷屏了AI朋友圈。这则消息之所以被无数人相信并转发,是因为已经有不少技术人员在社交平台上晒出了「红队进攻测试」邀请。 基于 GPT系列庞大的用户体量和影响力,OpenAI 将更加重视GPT-5 的安全性,作为GPT-5上市前的…

Azure runbook 使用用户托管标识查看资源状态

Azure runbook 使用用户托管标识查看资源状态 在托管标识里创建用户托管标识在被查看或变更资源进行授权创建自动化账号和runbook发布脚本添加计划 在托管标识里创建用户托管标识 在被查看或变更资源进行授权 这里是选取的Analysis Services 资源 创建自动化账号和runbook 发布…

如何在 Node.js 中使用 bcrypt 对密码进行哈希处理

在网页开发领域中,安全性至关重要,特别是涉及到用户凭据如密码时。在网页开发中至关重要的一个安全程序是密码哈希处理。 密码哈希处理确保明文密码在数据库受到攻击时也难以被攻击者找到。但并非所有的哈希方法都是一样的,这就是 bcrypt 突…

科技云报道:卷完参数卷应用,大模型落地有眉目了?

科技云报道原创。 国内大模型战场的比拼正在进入新的阶段。 随着产业界对模型落地的态度逐渐回归理性,企业客户的认知从原来的“觉得大模型什么都能做”的阶段,已经收敛到“大模型能够给自身业务带来什么价值上了”。 2023 年下半年,不少企…

【C#】读取指定XML节点

&#x1f4f0;XML文件 <?xml version"1.0" encoding"utf-8"?> <configuration><userSettings><Internal.Settings type"Desktop"><setting name"StatsDisplayCount" serializeAs"String">…