VSCODE 插件初探

写在前面 分享一个vscode插件background(用于改变背景)。点击直接跳到vscode插件开发步骤

做vscode的插件,很久就有这个想法了,但是一直因为这样,那样的事情耽误,放弃了N次。不过确实让我对文档有了个直观的了解。

上周末的时候因为测试妹纸要加班测试,让我也到公司加班,等待可能出现的bug这理由听着就扯淡

当然一群妹纸都到公司等着了,我也必须去......于是在等待bug的时间里看了看官方的文档,在这里写了点自己的摸索结果。

本文分为2部分,1是分享自己做的一个demo,2个分享自己摸索的一些制作插件踩完坑后的一点经验。

官方vscode插件文档 https://code.visualstudio.com/docs/extensions/overview

vscode-background插件地址 https://marketplace.visualstudio.com/items?itemName=shalldie.background

Github地址 https://github.com/shalldie/vscode-background

做了一个vscode背景插件,大家可以试试F1输入 ext install background 来试用,仅测试了win7,win10,目前只支持默认主题:

安装:

有3个命令:

效果图:

具体怎么用应该能看懂吧,,,每个操作步骤我都配了中英文提示,还有水印提示。如果还是不明白,可以随便玩,玩坏了大不了重装呗 =。=

vscode 插件开发步骤,一点经验

说再多也不如做一遍,这里我们一起来一步步做一个插件。就做官网的那个demo,wordCounter,用于统计当前页单词量。 官网是TypeScript,我不会...这里就用nodejs来示例。

一、搭建环境,准备工作

首先当然是安装nodejs跟vscode,这里我略过了,不用我多嘴。

vscode 团队,为插件开发提供了一个工具,先全局安装这个,然后执行 yo code 来开始我们的工作。

npm install -g yo generator-code

yo code

我们选第二项,这里需要注意下:一般情况可以用键盘的 ↑ ↓ 键来调整,但是win10有时候按了没反应,这时候可以输入2回车,来达到同样的目的。

然后会出现以下一系列选项,一路回车就好...... 相信起名字不会难道各位,其实我自己很多时候为一个变量的命名会耽误很久,改很多次。囧。

然后它会自动执行 npm install 来加载vscode这个依赖。我这里网不行所以直接差掉,自己用 cnpm install 来安装,没有影响,可以直接关闭。

准备工作到此完毕,我们开始搞代码。

二、结构简介

..

三、Hello World,vscode加载插件的流程

扯了那么多,先看看helloworld的效果吧。直接按F5

不出意外,会弹出一个提示消息:“Hello World”

VSCODE ,是如何加载并运行插件的。

这里我参考了不少资料,官网的文档,和其它的一些文章。四级的英语水平,头一次感觉到稍许作用。

1.package.json 告知vscode,自己定义的事件,和触发事件的方式

	"activationEvents": [
		"onCommand:extension.sayHello"
	],
	"contributes": {
		"commands": [{
			"command": "extension.sayHello",
			"title": "Hello World"
		}]
	}

activationEvents是定义事件触发的时间,contributes是定义有哪些事件。commands 中的command和title是事件的名称,和显示给用户的内容(因为这里触发时间是在用户command的时候,即在F1中选择命令。)

先说定义的事件,事件名称,个人建议还是加上自己的命名空间。比如:extension.插件名.事件名 。 各有所爱吧,我觉得这样直观一些。定义的command事件,就可以在 F1 中找到对应的命令,用起来很方便。这里是用户点击了【Hello World】这个项,就触发了【extension.sayHello】这个事件。

然后是 activationEvents ,这个表示事件被激活的时间。这里是指:用户在F1中选择了命令的时候。之后会介绍其它的激活方式。

2.extension.js 程序入口

我使用的是注释的方式来描述extension.js里面的各个地方的作用:

// vscode这个包,包含了里面所有的api
var vscode = require(‘vscode‘);

// 在插件被激活的时候,这个方法会被调用
function activate(context) {

	//这是注册在package.json里面的事件,且是command方式触发的
	//注意:这里的command注册事件,返回的是一个类似于“非托管资源的对象”,难道是实现了“idispossible接口”么...吐个嘈
	//这个需要手动释放
	var disposable = vscode.commands.registerCommand(‘extension.sayHello‘, function () {

		//用户选择这个command指令的时候,就会触发里面的方法
		//这里是显示了一个helloworld提示框
		vscode.window.showInformationMessage(‘Hello World!‘);
	});

	//需要释放的资源都在这里依次push到这个数组里面
	//注意,这些非托管的资源,都含有dispose方法,自己封装的对象,如果有需要手动释放的资源,请也实现dispose方法吧
	context.subscriptions.push(disposable);
}
exports.activate = activate;

四、稍稍改动,做一个自启动统计词量的插件

题外话:我的了解,vscode是基于electron做的,而electron好像是在新版本chrome出来一周还是一个月,就被更新chrome到electron,所以在跟vscode 的前端交互这里,前端方面不用考虑兼容写法,什么新语法糖随便用...

1.修改package.json

	"activationEvents": [   // "*" 表示在vscode启动的时候,就启动插件了。不太友好,谨慎使用。
		"*"
	],
	// "contributes": {     // 自启动插件,不需要命令
	// 	"commands": [{
	// 		"command": "extension.sayHello",
	// 		"title": "Hello World"
	// 	}]
	// },

2.添加wordCounter.js 文件

class WordCounter {
    constructor(_vscode) {        //构造函数,传入vscode对象
        this.vscode = _vscode;
        this.init();
    }

    init() {                      //初始化
        var vscode = this.vscode;
        var StatusBarAlignment = vscode.StatusBarAlignment;
        var window = this.vscode.window;

        //statusBar,是需要手动释放的
        this.statusBar = window.createStatusBarItem(StatusBarAlignment.Left);

        //跟注册事件相配合的数组,事件的注册,也是需要释放的
        var disposable = [];
        //事件在注册的时候,会自动填充一个回调的dispose到数组
        window.onDidChangeTextEditorSelection(this.updateText, this, disposable);

        //保存需要释放的资源
        this.disposable = vscode.Disposable.from(disposable);

        this.updateText();
        this.statusBar.show();
    }

    updateText() {       //现在快凌晨两点,偷个懒早点睡,临时改成字符数量了。
        var window = this.vscode.window;
        this.editor = window.activeTextEditor;
        var content = this.editor.document.getText();
        var len = content.replace(/[\r\n\s]+/g, ‘‘).length;
        this.statusBar.text = `啦啦啦...已经敲了${len}个字符了`;
    }

    dispose() {  //实现dispose方法
        this.disposable.dispose();
        this.statusBar.dispose();
    }
}

module.exports = WordCounter;

3.在入口 extension.js中调用一下wordCounter.js

// vscode这个包,包含了里面所有的api
var vscode = require(‘vscode‘);

// 在插件被激活的时候,这个方法会被调用
function activate(context) {

	var WordCounter = require(‘./src/wordCounter‘);
	var counter = new WordCounter(vscode);

	//需要释放的资源都在这里依次push到这个数组里面
	//注意,这些非托管的资源,都含有dispose方法,自己封装的对象,如果有需要手动释放的资源,请也实现dispose方法吧
	// context.subscriptions.push(disposable);

	context.subscriptions.push(counter);

}
exports.activate = activate;

简单看一下效果,F5启动:

...

五、Demo,以及发布的问题

下载wordCounter插件项目

发布到插件市场,其实挺麻烦的。流程大概是这样...如果我没记错。

  • 1 注册microsoft账号
  • 2 注册开发者账号
  • 3 申请token用于远程发布
  • 4 本地安装vsce
  • 4 本地利用token登陆
  • 5 配置文件,进行发布
  • 发布流程 建议前往 https://code.visualstudio.com/docs/tools/vscecli查阅详细步骤 0.0

如果只是自己用就方便多了,直接把项目拷贝到 xxx\.vscode\extensions 文件夹下

Windows %USERPROFILE%\.vscode\extensions

Mac $HOME/.vscode/extensions

Linux$HOME/.vscode/extensions

写的比较仓促,有错误的地方请指正出来我尽快改。

.

时间: 2024-11-10 12:59:26

VSCODE 插件初探的相关文章

精选!15 个必备的 VSCode 插件(前端类)

精选!15 个必备的 VSCode 插件(前端类) 15 天前 ? Plugins, Web前端 ? 暂无评论 Visual Studio Code 是由微软开发的一款免费.跨平台的文本编辑器.由于其卓越的性能和丰富的功能,它很快就受到了大家的喜爱. 就像大多数 IDE 一样,VSCode 也有一个扩展和主题市场,包含了数以千计质量不同的插件.为了帮助大家挑选出值得下载的插件,我们针对性的收集了一些实用.有趣的插件与大家分享. 1. Open-In-Browser 由于 VSCode 没有提供直

vscode 插件

文档注释插件 Document This 精选!15个必备的VSCode插件 https://blog.csdn.net/qq_38906523/article/details/77278403 原文地址:https://www.cnblogs.com/yang-C-J/p/8855424.html

vscode插件

Auto Close Tag // 自动闭合标签 htmlAuto Rename Tag // 重命名自动更新尾签 htmlopen in browser // vscode中打开浏览器 html Prettier - Code formatter // 格式化插件 js|html|cssBeautify // 格式化插件 jsJavaScript (ES6) code snippets // es6代码块 jsBracket Pair Colorizer // 颜色标识匹配的括号 jsESLi

玩转VSCode插件之Remote-SSH

前言 每当更换电脑就要从新搭建一遍开发环境... 每当拉完最新代码程序在本地跑不起来的时候就要检查服务器和开发电脑的环境... 每当服务器上出Bug的时候就想如果可以能够调试服务器代码多好啊.. 你是不是早就受够了vim这个煞笔编辑器... 现在最火的是云原生应用,什么时候才能云开发啊? 来了来了它真的来了!!! 北京时间2019年5月3日,在 PyCon 2019 大会上,微软发布了 VS Code Remote,开启了远程开发的新时代!这次发布包含了三款核心的全新插件,它们可以帮助开发者在容

用VSCode插件来一键填满Github的绿色格子吧-AutoCommit

autoCommit 一个用于Git自动commit的VSCode插件,它可以用来补充之前忘记提交commit,帮助你把首页的绿色格子填满. 使用效果 使用本插件来控制commit次数. 如下图,你甚至可以规划一下commit次数,然后画出图形, 天空才是你的极限. 功能特性 选择多个日期范围:一次操作即可提交不同日期commit 控制每个日期的commit次数: 可以用它来控制绿色格子的颜色,了解commit次数与颜色 随机commit次数:随机commit次数让我们的提交看起来更加逼真. 取

完全离线安装VSCode插件--Eslint

最近折腾了一番,总算把Eslint插件在离线的情况下安装好了.之前查了挺多,但是很多方法还是在没有完全离线的情况下进行的.之所以想完全离线安装,主要是因为我们工作的地方是禁止访问外网的,所以像直接执行npm命令来进行一些包的安装,其实对我来说是用不了的. 好了,现在进入正题,说下我的解决方式吧. 1.在无法联网的电脑上先把VSCode安装好. 2.在家里有网的电脑上,在vsCode里面的扩展直接安装eslint插件,然后在该路径(C:\Users\Administrator\.vscode\ex

vscode插件推荐

在扩展(Ctrl+Shift+X)中直接搜索这些插件的名字安装即可 1.HTML Snippets 超级使用且初级的H5代码片段以及提示 2.HTML CSS Support 让HTML标签上写class智能提示当前项目所支持的样式 3.jQuery Code Snippets jQuery 提示工具 4.Path Intellisense 路径提示补全 5.Document this Js的注释模板 6.ESlint ESlint接管原声js提示,可以自定制体会规则 7.Auto Close

vscode 插件备忘

由于不喜欢嵌入式c语言开发IDE,所以一致就当IDE是编译器,编辑工作都是使用其他文本编辑器替代的,最开始使用source insight,但是乱码问题和新建工程的不便利(也许不太会用),让我很纠结,当看到ST3时,我眼前一亮,感觉这就是我想要的,虽然ST3很好,但是当我遇到vscode的时候,我毅然选择了vscode,还有比这还傻瓜的软件吗?还是微软懂中国人啊! ST3和VScode的NB功能都是依靠插件来实现的(vscode已经内置了很多功能了),貌似嵌入式c的插件不多,寻找了有些自己用的还

VSCode插件MSSQL教程(昨天提了一下)

什么数据库都木有(系统自带的不算) 插件自己安装一下 按F1,输命令 连接就输入名字,创建就空着 用户名 下次就不用再输了 可以不填 连接成功了 创建数据库,创建表等等,里面基本上都有,就不一个个演示了,自己试试吧 执行快捷键是Ctrl+Shift+E 看看图形化,数据库出来了 --------------------------------------------------------------------- 扩:视图显示在下面 创建表,插入数据后查一下 结果可以导出各种格式 知道为什么我