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

目录

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

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

前言

使用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中的这个默认构建任务有问题:

在这里插入图片描述
在这里插入图片描述

发现这.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.hqwc.cn/news/598192.html

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

相关文章

Leetcode刷题-哈希表详细总结(Java)

哈希表 当我们想使⽤哈希法来解决问题的时候,我们⼀般会选择如下三种数据结构。 数组set (集合)map(映射) 当我们遇到了要快速判断⼀个元素是否出现集合⾥的时候,就要考虑哈希法。如果在做⾯试题⽬的时候…

SpringCloud学习(11)-SpringCloudAlibaba-Nacos数据模型

一、Nacos数据模型 1.1、数据模型 对于Nacos配置管理,通过Namespace、Group、Date ID能够定位到一个配置集。Nacos数据模型如下所示: 1.2、命名空间(Namespace) 可用于进行不同环境的配置隔离。例如: 1)、可以隔离开发环境——测试环境和…

【Linux】进程学习① (进程的PCB(task_struct)进程的标识符详解进程的创建fork函数)

目录 ​编辑 1.进程的概念 1.1进程的描述与组织:进程的PCB 进程:进程是 内核pcb对象可执行程序/内核数据结构可执行程序进程 1.3 task_struct 2.PCB内部属性 3 查看进程 4.获取进程标识符:getpid函数(4-6主要围绕进程的标识符展开…

全系统各类型工程水土保持方案编制

孙老师(高级工程师):长期承担重点水土保持方案编写方面工作,开设多场线下、线上培训会议,拥有丰富的工程和教学经验,为众多单位培养了近千名水土保持骨干人员,建有多个技术交流群,长…

HCIP-Datacom(H12-821)题库补充(4月7日)

最新 HCIP-Datacom(H12-821)完整题库请扫描上方二维码访问,持续更新中。 在PIM-DM中,路由器会为被裁剪的下游接口启动一个剪枝定时器,定时器超时后接口就会恢复转发。默认情况下该定时器是多少秒? A&#x…

帧动画实践

帧动画 基本介绍动画帧率(FPS)帧动画开发帧动画的实现方案gif图实现动画css实现动画js实现逐帧动画(1)raf介绍(2)为什么建议raf(定时器和Raf区别)? 实现帧动画常用的解决方案 demo实…

通讯录----顺序表版本

1.通讯录的实现逻辑 对于通讯录,我们做的无非就是初始化,销毁。添加联系人数据,修改联系人数据,删除联系人数据,查找联系人数据,展示联系人数据; 这个不就和我们的顺序表的逻辑如出一辙吗&…

Lesson1--数据结构前言

1. 什么是数据结构? 2. 什么是算法? 3. 数据结构和算法的重要性 4. 如何学好数据结构和算法 5. 数据结构和算法书籍及资料推荐 1. 什么是数据结构? 数据结构(Data Structure) 是计算机存储、组织数据的方式,指相互之间存在一…

虚拟机 ubuntu 20.04 git 设置代理的方法

前言 ubuntu 20.04 虚拟机中 Git 访问 github 或者其他的 git 仓库,大部分情况下速度很慢,并且容易掉线 如果 主机上使用了代理软件,但是虚拟机 ubuntu 中 Git 访问 git 仓库依旧是很慢 【问题】如何设置 虚拟机 ubuntu 的 Git 代理&#x…

从概念到实践:探索独立站在当代电商中的关键作用

随着数字化时代的到来,电子商务已成为全球商业生态的核心组成部分。在这个不断变化的市场中,独立站作为企业建立在线身份和拓展业务的强大工具,正逐步展现出其不可替代的价值。 从概念到实践,本文将深入探索独立站在当代电商中的关…

vivado 系统内逻辑设计调试流程

系统内逻辑设计调试流程 Vivado 工具提供了诸多功能 , 用于在真实硬件器件中调试系统内设计。系统内调试流程包含 3 个不同阶段 : 1. 探测阶段 : 确定设计中要探测的信号和探测的方法。 2. 实现阶段 : 完成设计实现 &…

Redis的主从复制和哨兵模式

目录 引言 一、主从复制 1.1 概念 1.2 作用 1.3 流程 1.4 环境搭建 二、哨兵模式 2.1 概念 2.2 原理 2.3 作用 2.4 故障转移机制 2.5 主节点的选举 2.6 环境搭建 2.6.1 修改Redis 哨兵模式的配置文件(所有节点操作) 2.6.2 启动哨兵模式 2.6.3查看哨兵信息 2.6.…