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

参考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.mzph.cn/news/799070.shtml

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

相关文章

SpringBoot集成Redis快速入门Demo

目录 1. Redis概述 2.下载安装 3. Spring-data-redis概述 4. 快速入门 4.1 创建工程 4.2 导入依赖 4.3 添加配置文件 4.4 添加Redis配置 4.5 添加Redis工具类 4.6 添加测试类 5. Demo下载地址 1. Redis概述 Redis(Remote Dictionary Server 远程…

ics-05-攻防世界

题目 点了半天只有设备维护中心能进去 御剑扫一下 找到一个css 没什么用 再点击云平台设备维护中心url发生了变化 设备维护中心http://61.147.171.105:65103/index.php?pageindex试一下php伪协议 php://filter/readconvert.base64-encode/resourceindex.php base64解一下…

华为海思校园招聘-芯片-数字 IC 方向 题目分享——第九套

华为海思校园招聘-芯片-数字 IC 方向 题目分享(有参考答案)——第九套 部分题目分享,完整版获取(WX:didadidadidida313,加我备注:CSDN huawei数字芯片题目,谢绝白嫖哈) 单选 1&…

(Git) gitignore基础使用

文章目录 前言.gitignore 模式匹配注释 #转义 \直接匹配任意字符匹配 *单个字符匹配 ?目录分割 /多级目录 **范围匹配 []取消匹配 ! 检查是否生效父子文件END 前言 Git - gitignore Documentation (git-scm.com) 在使用git管理的项目中,可以通过.gitignore文件管理…

【Redis 知识储备】冷热分离架构 -- 分布系统的演进(5)

冷热分离架构 简介出现原因架构工作原理技术案例架构优缺点 简介 引入缓存, 实行冷热分离, 将热点数据放到缓存中快速响应 (如存储到 Redis中) 出现原因 海量的请求导致数据库负载过高, 站点响应再读变慢 架构工作原理 多了缓存服务器, 对于热点数据全部到缓存中, 不常用数…

【Redis 知识储备】垂直分库架构 -- 分布系统的演进(6)

垂直分库架构 简介出现原因架构工作原理技术案例架构优缺点 简介 数据库的数据被拆分, 数据库分布式存储, 分布式处理, 分布式查询, 也可以理解为分布式数据库框架 出现原因 单机的写库会逐渐会达到性能瓶颈, 需要拆分数据库, 数据表的数据量太大, 处理压力太大, 需要进行分…

阿里云服务器可以干什么?阿里云服务器主要用途是干嘛的?

阿里云服务器可以干嘛?能干啥你还不知道么!简单来讲可用来搭建网站、个人博客、企业官网、论坛、电子商务、AI、LLM大语言模型、测试环境等,阿里云百科aliyunbaike.com整理阿里云服务器的用途: 阿里云服务器活动 aliyunbaike.com…

armlinux裸机-uart

uart是一对一的串行异步全双工通信通信协议,串行速度较慢(usart支持同步通信) 传输原理 多个参数可以设置 为满足使用需求,我们一般都用带fifo缓冲中断。 我们使用S3C2440芯片,具体寄存器操作可以查看用户手册

ES入门十四:分词器

我们存储到ES中数据大致分为以下两种: 全文本,例如文章内容、通知内容精确值,如实体Id 在对这两类值进行查询的时候,精确值类型会比较它们的二进制,其结果只有相等或者不想等。而对全文本类型进行等值比较是不太实现…

【深度学习】StableDiffusion的组件解析,运行一些基础组件效果

文章目录 前言vaeclipUNetunet训练帮助、问询 前言 看了篇文: https://zhuanlan.zhihu.com/p/617134893 运行一些组件试试效果。 vae 代码: import torch from diffusers import AutoencoderKL import numpy as np from PIL import Image# 加载模型…

Redis分布式锁误删情况说明

4.4 Redis分布式锁误删情况说明 逻辑说明: 持有锁的线程在锁的内部出现了阻塞,导致他的锁自动释放,这时其他线程,线程2来尝试获得锁,就拿到了这把锁,然后线程2在持有锁执行过程中,线程1反应过…

Linux 命令完全手册(1),受益匪浅

第一列返回的是行数,第二列是字数,第三列则是比特数。 我们可以让它只计算行数: wc -l test.txt 或者只计算字数: wc -w test.txt 或者只计算比特数: wc -c test.txt 在 ASCII 字符集中,比特数等于字…

python爬虫学习第十六天--------URLError和HTTPError、cookie登录、Handler处理器

🎈🎈作者主页: 喔的嘛呀🎈🎈 🎈🎈所属专栏:python爬虫学习🎈🎈 ✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天…

多轴机械臂/正逆解/轨迹规划/机器人运动学/Matlab/DH法 学习记录01——数学基础

系列文章目录 本科毕设正在做多轴机械臂相关的内容,这里是一个学习机械臂运动学课程的相关记录。 如有任何问题,可发邮件至layraliufoxmail.com问询。 1. 数学基础 文章目录 系列文章目录一、空间位置、姿态描述二、旋转矩阵(Rotation matri…

线程池的方式爬虫

<!--爬虫仅支持1.8版本的jdk--> <!-- 爬虫需要的依赖--> <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.2</version> </dependency><!-- 爬虫需…

mysql修改密码提示: Your password does not satisfy the current policy requirements

1、问题概述&#xff1f; 环境说明&#xff1a; Red Hat Enterprise Linux7mysql5.7.10 执行如下语句报错&#xff1a; set password for rootlocalhost password(123456); ERROR 1819 (HY000): Your password does not satisfy the current policy requirements意思就是&a…

摄影杂记二

一、相机操作指南 ⑴按键说明&#xff1a; 除了常规的几个模式&#xff0c;里面就特殊场景可以看一下&#xff0c;有全景&#xff0c;支持摇摄。 lock&#xff1a;多功能锁。可以锁定控制按钮和控制环。在设置中找到多功能锁&#xff0c;可以设置锁定什么。 m-fn&#xff1a;多…

Go数据结构的底层原理(图文详解)

空结构体的底层原理 基本类型的字节数 fmt.Println(unsafe.Sizeof(0)) // 8 fmt.Println(unsafe.Sizeof(uint(0))) // 8 a : 0 b : &a fmt.Println(unsafe.Sizeof(b)) // 8int大小跟随系统字长指针的大小也是系统字长 空结构体 a : struct { }{} b : struct {…

国内ChatGPT大数据模型

在中国&#xff0c;随着人工智能技术的迅猛发展&#xff0c;多个科技公司和研究机构已经开发出了与OpenAI的ChatGPT类似的大型语言模型。这些模型通常基于深度学习技术&#xff0c;尤其是Transformer架构&#xff0c;它们在大量的文本数据上进行训练&#xff0c;以理解和生成自…

每天五分钟掌握深度学习框架pytorch:本专栏说明

专栏大纲 专栏计划更新章节在100章左右&#xff0c;之后还会不断更新&#xff0c;都会配备代码实现。以下是专栏大纲 部分代码实现 代码获取 为了方便用户浏览代码&#xff0c;本专栏将代码同步更新到github中&#xff0c;所有用户可以读完专栏内容和代码解析之后&#xff0c…