为vscode开发一款svn右键菜单扩展

在我平时的工作中会经常用到svn blame这个命令,但是vscode现有的svn扩展普遍都不能自定义右键菜单。

所以我产生一个想法:自己动手为vscode开发一款svn的扩展来定制右键菜单,本文记录这个svn扩展的开发记录,此扩展开发约耗时周末中的一天。

最终成果:在vscode扩展中搜索:svnHelper就可以找到我编写的svn扩展,商店下载地址:https://marketplace.visualstudio.com/items?itemName=qingqingzhao.svnhelper

为vscode开发一款svn右键菜单扩展

vscode的svn扩展源代码

重点:这几个库拉下来之后,我尝试直接通过vsce package指令生成vsix,全部都失败了,编译代码时有不同的出错,只能去看vscode的开发文档。

这里我列一下我找到的几个开源的vscode的tortoise svn 扩展,每个仓库的代码我大概扫了一下:

如果想自己往右键菜单中添加选项,这个扩展的源代码比较简单易懂:https://github.com/florentulve/vstortoise

这个可以提交整个workspace:https://github.com/fantacytyx/vscode-tortoise-svn

这个提供很多的命令,https://github.com/cdsama/tortoise-svn-for-vscode

其它解决办法

在时间急迫的情况下,我找到了这个神器,在vscode中可以打开系统右键菜单,这样也可以满足我的需求,只是它需要多点一下鼠标

Windows Explorer Context Menu:https://marketplace.visualstudio.com/items?itemName=florentulve.vstortoise

github上源码报的错

上述几个源码库在编译时无一列外都会报错,我猜原因可能是我安装的nodejs和vscode版本太新有关系,因为这些库都是三四年前的。

我的操作步骤是看vscode的官方文档来操作的,步骤如下:

首先通过npm install来安装依赖,但会报:Cannot find module ‘vscode’.

然后npm install vscode 之后,再次编译就有一堆的 node.d.ts编译出错

尝试过修改package.json中依赖库的版本之后,还是无法解决编译时的报错。

结论:期间还出现可以调试,但打包为vsix就会有不一样的报错,最终我放弃了折腾上述几个库,自己重新开始一个项目开发。

vscode扩展开发学习资料

新建一个vscode的扩展项目:范例-hello-world-Microsoft Visual Studio Code 中文手册 (cntofu.com)

推荐这个系列,有配图讲的很清晰:VSCode扩展开发全攻略(三)package.json详解-好记的博客 (haoji.me)

微软的文档及例子

微软的例子:https://github.com/microsoft/vscode-extension-samples

微软VSCode扩展开发官方文档:https://code.visualstudio.com/docs/extensions/overview

生成vsix及发布到市场文档:https://code.visualstudio.com/api/working-with-extensions/publishing-extension

书籍

如果时间充实的同学,可以看看微软韩老师的这本书《Visual Studio Code 权威指南》,在第15章有讲到如何开发一个vscode扩展

开发扩展的步骤

需要下载nodejs,用来编译及发布

需要安装的库:

用来生成新建项目的:npm install -g yo generator-code

用来打包vsix的:npm i vsce -g

开发扩展的步骤

  1. cd到你要把项目保存的路径,然后通过yo code新建一个项目,然后选项项目的开发语言,熟悉C#的可选TypeScript
  2. 编写扩展代码
  3. 按F5运行扩展,或者在运行调试这里,运行或新建调试项:Run Extension
  4. vsce package,把扩展打包为vsix文件
  5. vsce publish,把扩展发布到商店

发布到vscode商店

这个命令不能使用了:vsce create-publisher your-publisher-name

需要到这个网站进行操作(提交的时候可能需要挂VPN):https://aka.ms/vscode-create-publisher

发布遇到问题

这个报错需要在package.json中把publisher的名字与申请的发布名字一致

ERROR  The Personal Access Token verification has failed. Additional information:

Error: Access Denied: e2d743d1-0ffd-4e04-a41d-c894878f29ba needs the following permission(s) on the resource /qingqingzhao to perform this action: View user permissions on a resource

开发及发布的注意事项

ps:开发过程中还遇到了其它的问题,可参考我的这篇文章《知乎vscode插件修改和重新编译

发布的注意事项如果repository有填则会检查github仓库?看到有篇文章中写道,因为我是放在gitee上的,所以我没填。

建议往项目中添加这几个文件,否则每次打包时都会需要你二次确认

LICENSE.txt

CHANGELOG.md

package.json中的name建议全小写,否则会有黄色警告线,每一项的意思如果不清晰的话,把鼠标移上去就会有提示这项是干啥的。

Original: https://www.cnblogs.com/zhaoqingqing/p/16125285.html
Author: 赵青青
Title: 为vscode开发一款svn右键菜单扩展

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/554486/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Golang仿云盘项目-2.3实现文件下载、修改、删除接口

    本文来自博客园,作者:Jayvee,转载请注明原文链接:https://www.cnblogs.com/cenjw/p/16462188.html 目录结构 ❯ pwd /home…

    技术杂谈 2023年7月24日
    0102
  • [学习笔记]Java流、文件和IO

    IO是Input和Output的的缩写,即输入/输出,它是一种流式的数据输入和输出的模型; Input把外部数据读到内存,Output把内存当中的数据输出到外部; 由于代码在内存中…

    技术杂谈 2023年7月24日
    080
  • Spark中广播TensorFlow模型

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    技术杂谈 2023年6月21日
    0112
  • 学习用具汇总

    透明硅胶软垫 写字舒服,不用担心桌子太硬写字难受!省力。外出考试带着,不用担心桌子太破把试卷戳破。搜索的时候就搜:考试专用透明垫板。 活页笔记本 可撕黑色横线信纸 每张都能撕下来,…

    技术杂谈 2023年6月1日
    0111
  • 机器学习(5)特征值的处理总结和缺失值的处理

    数值型数据处理的方式:1,归一化 2,标准化 3,缺失值处理(pandas处理) 类别型数据:on-hot编码 时间类型数据:时间切分 posted @2018-11-19 16:…

    技术杂谈 2023年7月23日
    0100
  • Call Hierarchy With IntelliJ IDEA

    Call Hierarchy allows you to quickly see all the places where a function or method is used…

    技术杂谈 2023年5月31日
    0122
  • Kettle_使用Pan.bat执行转换、Kitchen.bat执行作业

    注意:使用bat文件执行速度比执行在spoon.bat中执行慢很多 一、使用Pan.bat执行转换 Pan.bat文件路径:\pdi-ce-6.1.0.1-196\data-int…

    技术杂谈 2023年5月31日
    0117
  • 国产化之银河麒麟.netcore3.1访问https服务的两个问题

    背景 某个项目需要实现基础软件全部国产化,其中操作系统指定银河麒麟,数据库使用达梦V8,CPU平台的范围包括x64、龙芯、飞腾、鲲鹏等。 考虑到这些基础产品对.NETCore的支持…

    技术杂谈 2023年7月11日
    0102
  • Java多线程

    join()方法使用:【已经开了3个线程ABC,要求线程A在线程B的前面执行,线程B在线程C的前面执行】 https://blog.csdn.net/zds448588952/ar…

    技术杂谈 2023年7月24日
    0125
  • Go sync.Map

    读写共享map 执行: fatal error: concurrent map writes 问题:内置的map不是并发安全的,要为map加锁来保证并发的安全性了 特点:开箱即用且…

    技术杂谈 2023年5月31日
    0104
  • 设计模式 13 解释器模式

    解释器模式(Interpreter Pattern)属于 行为型模式 解释器模式是指给定一门语言, 基于它的语法, 定义解释器来解释语言中的句子。是一种按照规定的语法进行解析的模式…

    技术杂谈 2023年7月25日
    095
  • 为什么说开源的COLA既是架构也是框架?

    COLA 是 Clean Object-Oriented and Layered Architecture的缩写,代表”整洁面向对象分层架构”,是来自阿里技…

    技术杂谈 2023年6月1日
    0121
  • GFS-Google 文件系统

    GFS分布式文件系统 简介 GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体…

    技术杂谈 2023年7月11日
    098
  • jq命令用法总结

    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。 如果说要给Linux文本三剑客(grep、sed、awk)添加一员的话,我觉得应该是jq命令,因为j…

    技术杂谈 2023年7月24日
    0114
  • 计算机系统实验

    实验三 一 实验目的 理解堆栈结构,利用缓冲区进行代码攻击 二 准备工作 配置实验环境(IDA、gcc),阅读实验指导书 三 实验过程 0x01第一关 首先理解堆栈的结构 /* 第…

    技术杂谈 2023年7月11日
    093
  • checking for tgetent()… configure: error: NOT FOUND!

    今天centos出现了下面的异常: checking for tgetent()… configure: error: NOT FOUND! You need to insta…

    技术杂谈 2023年6月1日
    0122
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球