为vscode开发一款svn右键菜单扩展
在我平时的工作中会经常用到svn blame这个命令,但是vscode现有的svn扩展普遍都不能自定义右键菜单。
所以我产生一个想法:自己动手为vscode开发一款svn的扩展来定制右键菜单,本文记录这个svn扩展的开发记录,此扩展开发约耗时周末中的一天。
最终成果:在vscode扩展中搜索:svnHelper就可以找到我编写的svn扩展,商店下载地址:https://marketplace.visualstudio.com/items?itemName=qingqingzhao.svnhelper
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
开发扩展的步骤
- cd到你要把项目保存的路径,然后通过yo code新建一个项目,然后选项项目的开发语言,熟悉C#的可选TypeScript
- 编写扩展代码
- 按F5运行扩展,或者在运行调试这里,运行或新建调试项:Run Extension
- vsce package,把扩展打包为vsix文件
- 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建议全小写,否则会有黄色警告线,每一项的意思如果不清晰的话,把鼠标移上去就会有提示这项是干啥的。
为vscode开发一款svn右键菜单扩展的更多相关文章
- svn右键菜单不显
问题1: 32位svn客户端安装到64位win7机器上,出现svn右键菜单不显. 网上有些说,,选择Mufwin7,关键下拉列表没有这项. 后来有人推荐64位系统安装64svn;32位系统安装32sv ...
- 几款jQuery右键菜单插件介绍
在网页中使用自定义右键菜单,实现上皆为使用javascript禁用浏览器默认的右键菜单,然后在网页中响应鼠标右键事件,弹出自定义的菜单. 类似右键菜单的组件网上很多.一般而言,改变浏览器的默认菜单应当 ...
- 自己写一个chrome扩展程序 - 右键菜单扩展
最近在学习Spring,心想dotnet如何实现类似形式呢.于是想认真学习Casetle组件,发现没有书籍!而spring的书多得很.于是只好找网上教程了.发现系统的文章不多.Terrylee好多文章 ...
- 几款jQuery右键菜单插件
1.jQuery Very Simple ContextMenu Plugin 2.ContextJS Project Page:http://lab.jakiestfu.com/contextjs/ ...
- [原创] Delphi小工具(Windows资源管理器右键菜单扩展)
两个小工具 1. 项目临时文件清理 2. Android Ndk 编译 c/c++ jni 源码工具. 下载后,点击Reg.bat就可以完成注册安装.不需要时点击 UnReg.Bat 就可以删除菜单. ...
- 【连载】Bootstrap开发漂亮的前端界面之自定义右键菜单
连载: 1<教你用Bootstrap开发漂亮的前端界面> 2.<Bootstrap开发漂亮的前端界面之实现原理> 网页中的自定义右键菜单越来越普遍,自定义右键菜单可以增强用户体 ...
- [xPlugins] jQuery Contextmenu右键菜单
[2012-04-12] Contextmenu 右键菜单 v0.1 版本发布 [功能] 在特定区域弹出右键菜单 [功能] 可以在弹出右键菜单区域内,再屏蔽某个小区域. [功能] 有两种方式添加右键菜 ...
- ASP.NET Aries 入门开发教程8:树型列表及自定义右键菜单
前言: 前面几篇重点都在讲普通列表的相关操作. 本篇主要讲树型列表的操作. 框架在设计时,已经把树型列表和普通列表全面统一了操作,用法几乎是一致的. 下面介绍一些差距化的内容: 1:树型列表绑定: v ...
- 关于FlexPaper 2.1.2版本 二次开发 Logo 、打印、搜索、缩略图、添加按钮、js交互、右键菜单、书签等相关问题
2015-03-02 更新文章,由于需求修改,更改了flexpaper插件,故增加第9.10.11小节,下载代码时请注意. 先废话几句.最近用到文档在线浏览功能,之前用的是print2flash(一个 ...
随机推荐
- 最小生成树MST算法(Prim、Kruskal)
最小生成树MST(Minimum Spanning Tree) (1)概念 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边,所谓一个 ...
- linux内存(三)内核与用户空间交互
来自网址http://www.kerneltravel.net/jiaoliu/005.htm 用户程序和内核的信息交换是双向的,也就是说既可以主动从用户空间向内核空间发送信息,也可以从内核空间向用户 ...
- SpringMVC前后端分离交互传参详细教程
温故而知新,本文为一时兴起写出,如有错误还请指正 本文后台基于SpringBoot2.5.6编写,前端基于Vue2 + axios和微信小程序JS版分别编写进行联调测试,用于理解前后端分离式开发的交互 ...
- Active MQ 整合SpringBoot
配置文件 POM <?xml version="1.0" encoding="UTF-8"?> <project xmlns="ht ...
- 论文写作中快速更新Word里面交叉引用的编号,巧用MathType
点击插入编号>>更新,即可快速更新交叉引用的编号,不用一个一个更新域!
- 知识点简单总结——Pollard-Rho算法
知识点简单总结--Pollard-Rho算法 MillerRabin算法 用于对较大(int64)范围内的数判定质数. 原理:费马小定理,二次探测定理. 二次探测定理:若 $ p $ 为奇素数且 $ ...
- springboot实现热部署的几种方式
原理:使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在 ...
- maven下载出现unknown文件夹
问题场景 maven下载配置完成后,发现如上图代码包下载失败,本地maven库中出现unknown文件夹,也就是说,maven无法定位下载到上面的代码包. 解决过程 仔细观察发现,所有下载失败的代码包 ...
- Element-UI资源原型库
Element-UI v2.0.0版本 Axure和Sketch库: 链接:https://pan.baidu.com/s/1LdsEh8BKQBjcWBKV5yQilQ 提取码:1xqn
- Java 有没有 goto?
goto 是 Java 中的保留字,在目前版本的 Java 中没有使用.(根据 James Gosling (Java 之父)编写的<The Java Programming Language& ...