VSCode插件开发梳理

纸上得来终觉浅,深知此事要躬行,所以来体验一下VSCode的插件开发,网上有不少小伙伴的文章给了很大帮助,本文的代码是直接使用网上的内容,特此整理出来给后来学习的伙伴们参考

https://www.cnblogs.com/lianm...
http://www.cnblogs.com/Leo_wl...javascript

搭建环境

首先Nodejs和VSCode须要提早安装好,这里对这块的安装再也不赘述。接下来安装yo 这是vscode团队为插件开发提供的工具html

npm install -g yo generator-code

安装成功后,经过yo code生成插件开发项目,这里官方推荐使用typescript,固然咱们更熟悉javascript,其他的根据状况默认便可java

clipboard.png

一路生成后,经过VSCode打开(File->Open Folder)刚生成的插件项目,在这一堆文件中,咱们只关心两个重点,extension.js 是插件的入口文件,package.json包含插件的配置信息node

准备完成后,为了先验证下插件项目正常OK,在VSCode中F5运行(或Debug->start)若是你能够看到VSCode又启动了一个窗口运行插件项目,shift+ctrl+p 输入Hello World若是在右下角能看到Hello World的提示信息就OK 了typescript

clipboard.png

若是在编辑插件时内容作了变动,在运行的窗口只需经过Ctrl+r 便可刷新,无需关闭从新运行npm

插件内容

这里就开始写插件具体的内容了,发挥创造想象力的时候到了,可是一开始无从下手,能够参考下官网的文档,写的非常详细,虽然是英文的可是直接翻译读起来也没特别怪json

官方入门示例一:https://code.visualstudio.com...api

这里的插件内容是根据官网示例二的Markdown字数统计作了修改后的内容,能够统计任意文件中所编写的字符数量数组

新建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;

修改extension.js

// vscode这个包,包含了里面全部的api
const vscode = require('vscode');
// 在插件被激活的时候,这个方法会被调用
function activate(context) {
    var WordCounter = require('./wordCounter');
    var counter = new WordCounter(vscode);
    //须要释放的资源都在这里依次push到这个数组里面
    context.subscriptions.push(counter);
}
exports.activate = activate;

// this method is called when your extension is deactivated
function deactivate() {
}
exports.deactivate = deactivate;

修改package.json

{
    "name": "wordcount",
    "displayName": "WordCount",
    "description": "wordcount",
    "version": "0.0.1",
    "engines": {
        "vscode": "^1.29.0"
    },
    "categories": [
        "Other"
    ],
    "activationEvents": [
        "*"
    ],
    "main": "./extension",
    "contributes": {
        "commands": [
            {
                "command": "extension.sayHello",
                "title": "Hello World"
            }
        ]
    },
    "scripts": {
        "postinstall": "node ./node_modules/vscode/bin/install",
        "test": "node ./node_modules/vscode/bin/test"
    },
    "devDependencies": {
        "typescript": "^3.1.4",
        "vscode": "^1.1.25",
        "eslint": "^4.11.0",
        "@types/node": "^8.10.25",
        "@types/mocha": "^2.2.42"
    }
}

而后就shift+ctrl+p进入到插件运行环境下测试就能够在状态栏中的字符数量提示了

本地使用插件

插件编写好了以后,如何正常在VSCode开发过程当中使用,这块直接把开发的插件项目拷贝到VSCode存放安装插件的目录下

C:\Users\your name\.vscode\extensions

插件项目拷贝进去后,重启VSCode,而后随意打开一个新的项目,在状态栏也能够看到字符统计的这个功能了

插件发布

官方插件发布流程:https://code.visualstudio.com...

Visual Studio Code的应用市场基于微软本身的Azure DevOps,插件的身份验证、托管和管理都是在这里。要发布到应用市场首先得有应用市场的publisher帐号

1.注册帐号 https://aka.ms/SignupAzureDevOps
2.获得token,登陆后选择Security,按照下图上的方式勾选,这里注意获得token必定要复制下来保存,由于第二次进入就不会再显示了
clipboard.png
3.安装vsce打包工具 npm install -g vsce
4.使用vsce工具命令建立发布帐号vsce create-publisher your-publisher-name
5.登陆帐号vsce login your-publisher-name
6.发布vsce publish

clipboard.png

发布成功后,能够访问https://marketplace.visualstu... 查看

在VSCode中也能够搜索进行安装

clipboard.png

这里在发布时有几个常见错误:
错误1:Error:Missing publisher name. Learn more:https://code.visualstudio.com...
解决方式:在package.json中将刚刚建立好的发布帐号配置进去"publisher":"your name",

错误2:Error:Make sure to edit the README.md file before you publish your extension
解决方式:看下README.md文件中是否有http地址

错误3:A ‘repository’field is missing from the 'package.josn' manifest file .Do you want to continue? [y/n]
解决方式:y

代码下载

访问百度网盘地址直接下载便可
https://pan.baidu.com/s/1-veA...

相关文章
相关标签/搜索