使用node开发一个解放双手的小工具《二》- vsCode插件包装

2023-05-16

背景:此篇是上篇《使用node开发一个解放双手的小工具》的后续,前边遗留了一些问题,最近完善了一下。

因为发现实际使用起来,有很多的不方便:

  1. 使用上,需要配置对应的根目录,因为是需要用户手动修改config中的地址,这时目录就有可能有问题,不是根目录、路径不完整之类的。
  2. 工具本身,提交到git上,需要拉下来,然后再工具的对应目录下运行,去生成对应目录下的文件。操作起来有点奇怪。

索性直接搞成vsCode插件么,现在前端开发应该对vscode这么熟悉,它自带的插件本身使用起来就很方便。而且在vsCode中使用,也比直接运行项目看起来更优雅。

于是开始百度vsCode插件编写,《VSCode插件开发全攻略》小茗同学的这篇攻略,真的是很详细了,所以关于vsCode发布相关的东西,我这里就不详细介绍了。

目录结构

├─.eslintrc.json
├─.gitignore
├─.vscodeignore
├─CHANGELOG.md
├─extension.js
├─jsconfig.json
├─LICENSE
├─package-lock.json
├─package.json
├─README.md
├─vsc-extension-quickstart.md
├─test
|  ├─runTest.js
|  ├─suite
|  |   ├─extension.test.js
|  |   └index.js
├─src									核心替换代码
|  ├─app.js
|  ├─config.js
|  ├─package.json
|  ├─util
|  |  └index.js
|  ├─template
|  |    ├─baseRepart                  模板目录
|  ├─image
|  |   └doge.jpg

改造思路

核心代码其实已经写好了,只要vsCode相关事件能触发我的生成方法就可以了。目前是这样想的:在用户右键要生成的目录,弹出可选择的按钮,点击之后调用创建模板的函数,因为是直接选择了对应目录,所以就可以获取到目录的路径,也解决了需要手动输入路径的问题。

// extension.js
// vsCode中注册一个 createTem事件。
    let createTem = vscode.commands.registerCommand('hhcreatepage.createTem',  (uri) => {
        vscode.window.showInformationMessage(`创建模板 当前路径:${uri.path}`);
        try {
            // 调用主方法
            createTemFun(uri._fsPath)
            console.log('执行成功')
        } catch (error) {
            console.log(error)
            vscode.window.showErrorMessage(error);
        }
    });

    context.subscriptions.push(createTem);

// package.json中 配置相关菜单和点击事件
	"contributes": {
		"commands": [
			{
				"command": "hhcreatepage.createTem",
				"title": "create-template"
			}
		],
		"menus": {
			"explorer/context": [
				{
					"command": "hhcreatepage.createTem",
					"group": "z_hh-create"
				}
			]
		}
	},

其实关于vsCode的东西非常少,只是相当于在外边套了一个壳子。传入了项目路径,之后的东西还是原来的模板生成。之后,将vsCode打包并发布到应用市场就可以了,发布相关的东西,参考上边教程链接

目前问题与后续计划

  1. 目前只能要求用户知道对应的目录(src的上级目录),选中了这一级才能生效,不然还是有问题(因为没找到用代码控制菜单显示隐藏的方法)
  2. 模板还是比较单一的,并不能控制生成代码是选择哪一个模板去生成。

虽然目前功能还是比较单一,但是也解决了目前的刚需问题。后边的优化,可以慢慢搞。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用node开发一个解放双手的小工具《二》- vsCode插件包装 的相关文章

  • element 去掉form表单的某一项单个form-Item校验

    在执行完相应的方法 xff0c 立即触发移除校验 this nextTick 61 gt this refs 39 form 39 clearValidate 39 name 39 this refs 39 form 39 clearVal
  • element表单多行数据自定义校验以及自定义传参

    场景说明 如下图 在form表单中迁移table表格 每行数据都要能编辑 单独校验 注释 此处的资源下拉框校验 还需要走异步请求获取结果 然后再对比校验 nbsp 话不多 上代码说明 1 首先获取的接口数据如下 form vmDataLis
  • Hbuilder修改项目git提交路径

    在git的使用中 xff0c 经常会出现git服务器IP地址变更的现象 xff0c 一旦服务器的IP地址有变化 xff0c 本地仓库的代码就和服务器失去了联系 xff0c 无法同步服务器的代码 这里说明一下 xff0c 如何修改git提交路
  • css3的clip-path方法剪裁实现(三角形,多边形,圆,椭圆)

    本例讲解如何通过clip path 把一个div xff08 元素 xff0c 可以是图片等 xff09 裁切成不同的形状 xff0c 这里以一个div为例宽高均为300px 注意 xff1a 不支持IE和Firefox xff0c 支持w
  • layui表格(table)排序

    layui表格本身提供sort排序 xff0c 但是只能排序当前一页 xff1b 如果后台返回几十页数据 xff0c 需要排序显示 xff0c 该如何做呢 xff0c 这里闲心大神提供了一个sort监听方法 xff1a 通过监听排序的列 x
  • Liunx下修改MySQL字符集

    Liunx下修改MySQL字符集 1 查找MySQL的cnf文件的位置 color 61 green find iname 39 cnf 39 print color color 61 olive usr share mysql my in
  • vue刷新当前页面,重载页面数据

    业务场景 xff1a 在管理后台 xff0c 在执行完 xff0c 增 xff0c 删 xff0c 改 xff0c 操作的时候 我们需要刷新一下页面 xff0c 重载数据 在JQ中我们会用到location reload 方法 xff0c
  • layui动态渲染生成左侧3级菜单(根据后台返回数据)

    声明 xff1a 这里非常感谢闲心大神 xff0c 开源了非常好用的前端UI框架 xff0c layui xff0c 如有侵权请联系我 当然闲心在2 0版本的layuiAdmin已经支持了 xff0c 不过是收费版的 xff0c 需要的同学
  • layui加载数据显示loading加载完成loading消失

    项目中 xff0c 向后台请求数据 xff0c 经常会出现较长的等待时间 xff0c 这时我们需要一个loading转圈圈 xff0c 接收到后台的数据时 xff0c 让loading消失 这layui中使用方法如下 xff1a 以表格为例
  • 信号量,消息邮箱的运用

    1 信号量的用途 1 xff09 共享资源的保护 xff0c 例如需要共用一段内存 xff0c 初始信号量的计数值为1 task1 xff1a task2 pend信号量 pend信号量 共享资源 共享资源 post信号量 post信号量
  • istio 部署及调用链显示

    选择版本号下载 https github com istio istio releases 下载 wget https github com istio istio releases download 1 13 2 istio 1 13 2
  • Poco Application 框架学习(1)

    基本的功能 提供了一个 int run int argc char argv 方法用于执行app run 方法会调用 类的 void initialize Application amp self 与 int main const std
  • Poco Application 框架学习(3)配置文件,日志

    配置文件及日志 配置文件 xff1a 配置文件初始化 一般应用程序都会有配置文件 xff0c Application 框架也不例外 通过一下接口来读取配置文件信息 当前 Poco支持的格式有 ini xml json properties
  • openssl 使用 未定义的引用

    ubuntu 下使用 openssl 3des 加密编译报错 tmp ccsIK1Cj o xff1a 在函数 main 中 xff1a test cpp text 43 0x218 xff1a 对 DES set key unchecke
  • openssl 使用 未定义的引用

    ubuntu 下使用 openssl 3des 加密编译报错 tmp ccsIK1Cj o xff1a 在函数 main 中 xff1a test cpp text 43 0x218 xff1a 对 DES set key unchecke
  • poco JSON 的使用

    三个例子 第一个是解析一个简单的 json 第二个是在构造一个 json 对象并且加入数据 第三个是解析带数组的 json对象 这三个场景基本上满足大部分需求了 span class hljs variable include span s
  • ROS(11)move_base详解

    11 move base详解 11 1 move base配置参数解读 参考链接 xff1a https blog csdn net banzhuan133 article details 90239252 https wenku baid
  • c++ 迭代器与下标访问效率问题

    今天验证下在 c 43 43 vector 下标访问及迭代器访问的效率问题 100W 数据存放到 vector 里 便利访问 xff0c 以为打印的效率很低 xff0c 所以不打印 xff0c 只是访问下就 ok 首先用迭代器的方式访问了一
  • 代码注释怎么写

    注释怎么写 注释的作用是什么 我认为注释最终作用无非就两个 1 和伪代码一样的作用 xff0c 为接下来要实现的功能写出一个指导性的算法思路 只是没有伪代码详细 但是也指出了完成此功能的大体算法思路 2 给看代码的人一个解释性说明 注意看代
  • 原始 socket 编程

    原始套接字简介 普通 socket 的权力和原始 socket 权力对比 1 原始 socket 可以和内核一样直接对所有层进行操作 除了物理层 可以更改 mac 更改 ip 更改端口 so dos 攻击就可以通过原始 socket 编程来

随机推荐

  • EventLoop execute() 怎么保证线程安全

    EventLoop 的 execute 是在 SingleThreadEventLoop 中实现的 64 Override public void execute Runnable task if task 61 61 null throw
  • EventLoop execute() 怎么保证线程安全

    EventLoop 的 execute 是在 SingleThreadEventLoop 中实现的 64 Override public void execute Runnable task if task 61 61 null throw
  • 关于 find grep xargs 命令总结

    1 定义 amp 区别 xff1a 1 find命令是根据文件的属性进行查找 xff0c 如文件名 xff0c 文件大小 xff0c 所有者 xff0c 所属组 xff0c 是否为空 xff0c 访问时间 xff0c 修改时间等 2 gre
  • ubuntu如何在当前文件夹下打开终端

    1 打开终端 xff0c 执行以下命令 xff1a sudo apt get install nautilus open terminal 2 在终端中执行下列命令 xff0c 重新加载文件管理器 nautilus q 3 执行以上指令后在
  • 解决libssl.so.1.0.0: 找不到的问题

    安装了多个版本的openssl后 xff0c 导致adb或svn无法使用 xff0c 出现以下错误 xff1a libssl so 1 0 0 no version information available 记录下最后的解决方法 xff0
  • JS对象—5.文档对象(document)

    document对象 一 span class token punctuation span 元数据 span class token number 1 span characterSet span class token operator
  • Keil5及芯片包的安装以及 Keil5打开Keil4工程编译出错解决方法

    一 温馨提示 1 安装路径不能带中文 xff0c 必须是英文路径 2 安装目录不能跟 51 的 KEIL 或者 KEIL4 冲突 xff0c 三者目录必须分开 3 KEIL5 的安装比起 KEIL4 多了一个步骤 xff0c 必须添加 MC
  • 上下文切换

    上下文切换是操作系统比较重要的一部分 xff0c 提到它 xff0c 我们第一时间想到的会是使用时间片轮转方式调度的os中涉及的进程之间上下文切换 再问还有没有其他 xff0c 也许会想到中断时 xff0c 上下文似乎也要切换 这两种切换是
  • Android系统 应用图标显示未读消息数(BadgeNumber) 桌面app图标的角标显示

    http www 51itong net android badgenumber 9789 html
  • smbclient介绍

    smbclient介绍 1 Smbclient介绍1 1 SMB 协议介绍 2 Smbclient命令使用技巧2 1 Smbclient 功能说明2 2 语法2 3 参数2 4 使用举例 1 Smbclient介绍 Smbclient sa
  • 关于void指针的地址问题

    如图 void指针指向其他类型的数据时对其地址加1 它可指向几乎任何数据 xff0c 且指针加1时相当于字符指针加1 xff0c 利用这一特性可将void指针作为形参类型 xff0c 可传入任意数据且对形参操作时可类比字符指针 xff0c
  • Ubuntu apt update无论使用什么源都出现类似的错误

    下面是清华源执行后的情况 Ign 1 https mirrors tuna tsinghua edu cn ubuntu jammy InRelease Ign 2 https mirrors tuna tsinghua edu cn ub
  • 从源码分析C++中forward完美转发和move移动语义的本质区别

    完美转发可以看做一种能够按照原来类型转发到另一个地方 xff08 函数 xff09 的方法 xff08 废话 xff09 咱不如直接上源代码 xff08 move h xff09 xff1a template lt typename Tp
  • 实现对单链表的倒置

    我们知道数组的倒置比较简单 xff0c 只需要知道数组的头 xff0c 和数组的尾 xff0c 将其数据互换 xff0c 再将第二个和倒数第二个互换 xff0c 一直这样操作下去 xff0c 数组就实现倒置了 那么单链表也可以通过这样的方法
  • 立创开源|18650锂电池四路充电器

    该工程为18650四路电池充电器 xff0c 支持DC Micro USB USB typec输入 xff0c 同时四路充电 充电芯片采用价格便宜的TP4056 xff0c 电池盒采用直插电池盒 每节电池充电电流为1A xff0c 由于电流
  • 无法连接上 archive.ubuntukylin.com:10006 (120.79.211.60),连接超时

    无法连接上 archive ubuntukylin com 10006 120 79 211 60 xff0c 连接超时解决方法 问题描述 执行sudo apt get update时出现如下错误 xff1a 错误 12 http arch
  • 【C++】模板与泛型编程

    泛型编程 泛型编程最初诞生于C 43 43 中 xff0c 由Alexander Stepanov 2 和David Musser 3 创立 目的是为了实现C 43 43 的STL xff08 标准模板库 xff09 其语言支持机制就是模板
  • LXC(Linux containers)常用命令介绍

    lxc version 用于显示系统LXC的版本号 xff08 可以通过此命令判断系统是否安装了lxc xff09 用法 xff1a lxc version 例如 lxc version lxc checkconfig 用于判断linux内
  • Docker 大势已去,Podman 万岁

    前言 郑重声明 xff1a 本文不是 Podman 的入门篇 xff0c 入门请阅读这篇文章 xff1a 再见 Docker xff0c 是时候拥抱下一代容器工具了 Podman 原来是 CRI O 项目的一部分 xff0c 后来被分离成一
  • 使用node开发一个解放双手的小工具《二》- vsCode插件包装

    背景 xff1a 此篇是上篇 使用node开发一个解放双手的小工具 的后续 xff0c 前边遗留了一些问题 xff0c 最近完善了一下 因为发现实际使用起来 xff0c 有很多的不方便 xff1a 使用上 xff0c 需要配置对应的根目录