如何创建VS Code 扩展插件

目录
  • 创建插件开发模板
  • 插件运行和调试
  • 插件打包
  • 扩展插件的安装和卸载
  • 创建第一个实用插件

VS Code提供了强大的扩展功能,我们可以通过开发插件实现自己的业务模型编辑器。这里我们快速介绍一下插件的创建、开发和发布过程。

创建插件开发模板

首先需要确认系统中安装了node.js,并且可以使用npm安装程序包。然后,安装插件的开发模板生成器:

npm install -g yo generator-code

安装完成后,使用模板创建第一个扩展项目,我们为这个项目创建一个子目录,然后进入命令行,在这个子目录下执行:

yo code

模板生成程序运行:

生成完成后,在命令行运行:

code .

这个项目在vs code 中打开了:

插件运行和调试

我们打开extension.js文件,可以看到插件启动的代码,我们对代码进行一点修改:

将里面的提示修改为我们需要的信息。然后按F5运行。这时,一个新的Vs Code界面启动了,在这个新界面中按Ctrl+Shift+P,打开命令窗口,输入hello world,在界面下方出现我们编辑的信息:

说明这个插件已经可以运行了。

插件打包

现在我们看如何将这个插件打包,在其它机器上安装使用。Vs Code的插件可以同时创建vsix文件发布,也可以发布到应用商店,通过插件管理器进行安装。我们这里只介绍第一种方式。

首先需要安装插件打包工具vsce:

npm i vsce -g

然后,我们还需要在package.json中增加publisher的信息:

"publisher": "zhenlei",

如果不增加这个信息,会出现如下错误:

然后还要修改打包工具创建的Readme.md文件,如果不修改,会出现如下错误:

现在我们可以打包了,在命令行中,进入项目文件夹,运行:

vsce package

这时会提问,缺少respository,这是一个警告,我们可以忽略,继续执行,安装包就创建完成了:

扩展插件的安装和卸载

可以在vs code的扩展管理器中安装打包好的扩展插件,选择从VSIX安装:

也可以在扩展管理器中禁用或卸载安装好的插件:

创建第一个实用插件

现在我们创建一个实用的插件,这个插件使用XLST模板将XML文件转换为另一种格式。转换功能使用开源的组件xslt-processor完成,插件本身功能很简单:打开xlst文件,转换当前的xml,将结果显示在新的窗口。

首先使用模板创建项目:

yo code

输入这个项目的名字zlxslt,这个项目我们使用yarn作为包管理器。项目创建完成后,使用

code .

在VS Code中打开项目。
现在需要引入xslt-processor,在终端中输入:

yarn add xslt-processor

这个命令会在项目中安装xslt-processor并更新项目中的package.json和yarn.lock。
在src目录中增加文件schema.d.ts,增加声明语句:

declare module 'xslt-processor';

修改package.json,去掉缺省创建的命令,增加新的命令:

	"activationEvents": [
		"onCommand:zlxslt.runMyXSLT"
	],

修改extension.ts:

// The module 'vscode' contains the VS Code extensibility API
// Import the module and reference it with the alias vscode in your code below
import * as vscode from 'vscode';
import * as fs from 'fs';
import { xmlParse, xsltProcess } from 'xslt-processor';
// this method is called when your extension is activated
// your extension is activated the very first time the command is executed
export function activate(context: vscode.ExtensionContext) {

	// Use the console to output diagnostic information (console.log) and errors (console.error)
	// This line of code will only be executed once when your extension is activated
	console.log('Congratulations, your extension "zlxslt" is now active!');

	const mydisposable: vscode.Disposable = vscode.commands.registerCommand('zlxslt.runMyXSLT', async (): Promise<any> => {
        const xsltFile = await vscode.window.showOpenDialog(
            {
                canSelectFiles: true,
                canSelectFolders: false,
                canSelectMany: false,
                filters: {
                    'XSLT' : ['xsl','xslt']
                }
            }
        );
        if(vscode.window.activeTextEditor !== undefined && xsltFile !== undefined) {
            const xml: string = vscode.window.activeTextEditor.document.getText();
            const xslt: string = fs.readFileSync(xsltFile[0].fsPath).toString();
            try {
                const rXml = xmlParse(xml);
                const rXslt = xmlParse(xslt);
                const result = xsltProcess(rXml, rXslt);
                const textDoc = await vscode.workspace.openTextDocument(
                    {
                        content: result,
                        language: 'xml'
                    }
                );

                vscode.window.showTextDocument(textDoc, vscode.ViewColumn.Beside);

            }
            catch(e) {
                vscode.window.showErrorMessage(e);
            }
        }
        else {
            vscode.window.showErrorMessage('An error occurred while accessing the XML and/or XSLT source files. Please be sure the active window is XML, and you have selected an appropriate XSLT file.');
        }
    });

	context.subscriptions.push(mydisposable);
}

// this method is called when your extension is deactivated
export function deactivate() {}

启动调试,会打开新的窗口,打开一个xml文件,然后按Ctrl+Shift+p打开命令窗口,选择“Run My XSLT”,这时会弹出文件选择窗口,选择xslt文件,转换后的xml会显示在旁边的窗口。

到此这篇关于如何创建VS Code 扩展插件的文章就介绍到这了,更多相关VS Code创建扩展插件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Vs Code中8个好用的python 扩展插件

    1. Python extension for Visual Studio Code 这个扩展是由微软官方提供的,支持但不仅限于以下功能: 通过Pylint或Flake8支持代码检查 在VS Code编辑器中调试代码 IntelliSense支持自动完成,代码导航和格式化. 支持Jupyter Notebook,Pytest和Unittest 在编辑器中轻松切换Python环境 2.Python Preview 这个插件很牛皮,能够实时可视化你的代码结果. 不仅如此,还能为VSCode切换各种主

  • 2021年值得向Python开发者推荐的VS Code扩展插件

    Visual Studio Code(简称 VS Code)是一个由微软开发,同时支持 Windows. Linux 和 macOS 等操作系统的免费代码编辑器,它支持测试,并内置了 Git 版本控制功能,同时也具有开发环境功能,例如代码补全.代码片段和代码重构等.VS Code 是程序员常用的代码编辑器之一,是一个可在所有平台上使用的开源.可扩展和轻量级的编辑器.这些品质使微软的 VS Code 大受欢迎,并成为 Python 开发的绝佳平台. VS Code 还拥有大量扩展,可以帮助提高开发

  • 如何创建VS Code 扩展插件

    目录 创建插件开发模板 插件运行和调试 插件打包 扩展插件的安装和卸载 创建第一个实用插件 VS Code提供了强大的扩展功能,我们可以通过开发插件实现自己的业务模型编辑器.这里我们快速介绍一下插件的创建.开发和发布过程. 创建插件开发模板 首先需要确认系统中安装了node.js,并且可以使用npm安装程序包.然后,安装插件的开发模板生成器: npm install -g yo generator-code 安装完成后,使用模板创建第一个扩展项目,我们为这个项目创建一个子目录,然后进入命令行,在

  • CKEditor扩展插件:自动排版功能autoformat插件实现方法详解

    本文实例讲述了CKEditor扩展插件:自动排版功能autoformat插件实现方法.分享给大家供大家参考,具体如下: 1.注册插件 首先找到根目录下的ckeditor/config.js文件,打开文件如下: CKEDITOR.editorConfig = function (config) { // Define changes to default configuration here. For example: // config.language = 'fr'; // config.ui

  • VSCode 使用 Code Runner 插件无法编译运行文件名带空格的文件问题

    使用 Visual Studio Code 写 C++ 程序最烦心的是大概就是使用 Code Runner 插件无法编译运行文件名带空格的文件了,这个问题困扰了我好久,虽然不影响学习,但太多分隔符总觉得不顺眼,于是我仔细研究了一下它. 先创建一个叫 "hello world" 的测试程序,我们再根据 G++ 报错英文分析一下原因: g++.exe: error: hello: No such file or directory g++.exe: error: world.cpp: No

  • Visual Studio 2010 前端开发工具/扩展/插件推荐

    怎么样让Visual Studio更好地编写HTML5, CSS3, JavaScript, jQuery,换句话说就是如何更好地做前端开发.Visual Studio 2010不管是旗舰版还是免费版都没有对前端开发方面做充分的优化.不要希望VS默认安装这些东西,我们有很多VS的扩展可是使用. 这里列出的大多数扩展都可以使用Extension Manager (Tools > Extension Manager)来安装,你可以通过Visual Studio Gallery网站下载这些扩展. We

  • 手把手教你 CKEDITOR 4 扩展插件制作

    本文实例讲述了CKEDITOR 4 扩展插件制作.分享给大家供大家参考,具体如下: 今天让我们来探索一下ckeditor的扩展功能,换句话说就是自定义按钮,以及点击按钮之后实现的功能. 要实现自定义按钮,我们要做几个事情: 1.准备一个图标,最好是16*16大小的png格式图片,你没有的话,姜哥帮你准备了一张. 2.在plugins目录下建立我们和自定义插件同名的目录,并且在里面建立一个叫plugin.js的文件. 3.在我们自己的插件目录中,建立一个dialogs目录,并且在里面新建一个与我们

  • postgresql 中的加密扩展插件pgcrypto用法说明

    近期测试了一下postgresql的加密扩展插件pgcrypto的aes加密 安装加密扩展插件:pgcrypto 在主节点上安装 create extension pgcrypto; aes加解密函数简单介绍 encrypt(data bytea, key bytea, type text) --加密 decrypt(data bytea, key bytea, type text) --解密 data 是需要加密的数据:type 用于指定加密方法 ASE方式加密: select encrypt

  • AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】

    本文实例讲述了AngularJS验证信息框架的封装插件用法.分享给大家供大家参考,具体如下: AngularJS 的表单验证规则 angular.js 的表单验证规则有 required(必填项),type="number"(必须为数字),type="email"(必须为邮箱地址),ng-max(最大值),ng-min(最小值),ng-max-length(最大长度),ng-min-length(最小长度),ng-pattern(正则验证)等等,而且angular写

  • 从零开始学YII2框架(二)通过 Composer 安装扩展插件

    目前yii2的扩展还不是很多,截止到今天,在官网一共有33个,不过这些插件中不乏有优秀的扩展插件, 我尝试了几个,发现了一系列好用的Yii2插件,作者是来自印度的krajee团队,他们写的插件都很好用.推荐一下. krajee团队的网站:http://krajee.com,有几个不错的插件可以尝试. 下面来介绍Yii2的插件安装方法.通过Composer安装插件yii2-detail-view. Git 推荐安装Git,Composer安装插件时候会用到Git Clone,Git官方下载网站:传

随机推荐