vscode插件开发实践与demo源码

vscode插件开发实践与demo源码

写在前面

工欲善其事必先利其器。vscode作为优秀的开发工具,给我的日常开发工作提供了极大的便利。其拓展机制更是如此。

但是,最近在做年度专业线任务时,有需要用到漂亮的行尾注释对齐,搜索后发现vscode官方插件市场没有我想要的。

于是便想着自己来开发这么个东西,一方面方便后边自己使用,一方面也能学习下vscode的插件开发、发布方法,另一方面要是发布后对其他人有所帮助就更好了。

本文主要内容

这篇文章是在我完成插件开发、发布后写的,记录下方法。

主要包含两个方面的内容:

  1. vscode插件开发、发布主要流程
  2. vscode插件demo源码参考https://github.com/gitshan/vscode-extension-comment-aligner

vscode插件开发、发布主要流程

  1. 插件开发前的准备:vscode、nodejs、vscode插件生产工具、git、微软账号
  2. 插件开发:插件构思、官方文档查阅
  3. 插件发布:打包、上传、插件市场操作
  4. 插件维护:更新迭代后打包、上传、插件市场操作

插件开发前的准备:

vscode、nodejs、git、微软账号,这个的准备无需多说。

vscode插件生产工具:官方推荐使用Yeoman 和 VS Code Extension Generator。用如下命令安装:

npm install -g yo generator-code

至此开发所需的准备已做好。

插件开发

使用生产工具初始化代码

执行如下指令

yo code

结果如下:

$ yo code

     _-----_     ╭──────────────────────────╮
    |       |    │   Welcome to the Visual  │
    |--(o)--|    │   Studio Code Extension  │
   `---------´   │        generator!        │
    ( _´U`_ )    ╰──────────────────────────╯
    /___A___\   /
     |  ~  |
   __'.___.'__
 ´   `  |° ´ Y `

? What type of extension do you want to create? (Use arrow keys)
> New Extension (TypeScript)
  New Extension (JavaScript)
  New Color Theme
  New Language Support
  New Code Snippets
  New Keymap
  New Extension Pack
(Move up and down to reveal more choices)

在os系统上通过上下键来选择要创建的类型,在win上输入1、2、3后按回车来选择。

其余步骤根据提示即可。得到如下结构目录结构:

├── .vscode      // 资源配置文件
├── CHANGELOG.md // 更改记录文件,会展示到vscode插件市场
├── extension.js // 拓展源代码文件
├── jsconfig.json
├── package.json // 资源配置文件
├── README.md    // 插件介绍文件,会展示到vscode插件市场
├── test         // 测试文件
└── vsc-extension-quickstart.md

ps:其余项目类型的文档目录可能会有所差别,以生成的文件目录为准。在js拓展项目下,最重要的就是extension.jspackage.json

插件构思

灵感来源于生活、工作,这个想到了就可以去做。比如我这个行尾注释对齐(上面的目录注释就是用的我刚开发好的插件)。

关于comment-aligner的具体思路就不写在这里了,感兴趣的可以去下载源码看看,里边包含了完整的注释。逻辑十分简单。

查阅文档开发

这里不得不说一下官方文档不太好看,至少不是那么友好。传送门https://code.visualstudio.com/api/references/vscode-api。英文实在吃力的可以使用chrome的一键翻译,翻译的还算准确的。

对于基本的应用主要查看window相关的就足够了,结合yo code生成的基本代码可以实现简单的功能。

插件发布

安装打包、发布工具
npm install -g vsce
创建发布人

插件市场官网创建发布人

创建发布人.png

完善package.json

package.json中有vscode的自定义配置,在执行打包命令时vscode会自检,如果配置错误或者遗漏会有提示信息。

较完整的信息如下(下方是我发布的comment aligner的package.json文件):

{
    "name": "comment-aligner",
    "displayName": "comment aligner",
    "description": "A tool for aligning the inline trailing comment",
    "version": "1.0.1",
    "publisher": "huangbaoshan", // 发布人,在插件市场官网创建的发布人id
    "icon": "icon/icon.png",     // 插件图标,用于在插件市场展示的icon;可以放到同级目录内,打包会带入
    "repository": {
        "type": "git",
        "url":"https://github.com/gitshan/vscode-extension-comment-aligner.git"
    },
    "engines": {
        "vscode": "^1.30.0"      // vscode版本号
    },
    "categories": [
        "Other"                  // vscode插件类别,会在插件市场的对应类别中展示
    ],
    "activationEvents": [
        "onCommand:extension.commentaligner"
    ],
    "main": "./extension.js",
    "contributes": {
        "commands": [{
            "command": "extension.commentaligner", // 插件注册的类名
            "title": "Comment Aligner"             // 插件在命令面包的展示名称
        }]
    },
    "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"
    }
}
打包

执行如下命令:

vsce package

在根目录得到:comment-aligner-1.0.1.vsix文件

发布
  1. 方法一:用vsce的vsce publish工具来发布,但是需要在官网配置Personal Access Token较为繁琐。可参考官方教程
  2. 方法二:在官网直接上传发布
    vscode插件发布1.png
    vscode插件发布2.png
    vscode插件发布3.png

    上传后点击确定即可发布成功。

发布检查
  1. 在插件市场官网看状态
    vscode插件发布4.png
  2. 在插件市场官网搜索
    vscode插件发布5.png
  3. 在vscode插件页搜索
    vscode插件发布6.png

以上均表示已发布成功。

插件维护

在发现bug和新功能开发完成后,需要更新插件,只需要将新生产的.vsix包上传到官网即可。
vscode插件发布7.png

最后

希望有用,谢谢大家。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用:执行 yo code之后,会有下面几个选项: ? What type of extension do you want to create(您想要创建什么类型的扩展?)? New Extension (JavaScript)? What's the name of your extension(你的分机名是什么,也就是项目名)?demo? What's the identifier of your extension(你的扩展的标识符是什么)?demo? What's the description of your extension(什么是您的扩展的描述)?learn vscode plugin? Enable JavaScript type checking in 'jsconfig.json'(在'jsconfig.json'中启用JavaScript类型检查)?Yes? Initialize a git repository(初始化一个git仓库)?Yes? bundel the source code with webpack (是否用webpack打包源码)?Yes? Which package manager to use(使用哪个包管理器)? yarn 。 引用:官方为了方便开发人员进行vscode插件开发,提供了对yo应的脚手架来生成对应的项目。vscode 扩展开发官方文档 // 全局安装需要的包 npm install -g yo generator-code 。 引用:VSCode插件的WebView类似于iframe的实现,但并不是真正的iframe(我猜底层应该还是基于iframe实现的,只不过上层包装了一层),通过开发者工具可以看到: 1、实现一个简单的webview功能 const vscode = require('vscode'); /** * @param {vscode.ExtensionContext} context */ function activate(context) { let disposable = vscode.commands.registerCommand( 'demo1.webview', showWebview ); context.subscriptions.push(disposable); } function showWebview() { // 创建webview const panel = vscode.window.createWebviewPanel( 'testWebview', // viewType 'WebView演示', // 视图标题 vscode.ViewColumn.One, // 显示在编辑器的哪个部位 { enableScripts: true, // 启用JS,默认禁用 retainContextWhenHidden: true, // webview被隐藏时保持状态,避免被重置 } ); panel.webview.html = `<html><body>你好,我是Webview</body></html>`; } function deactivate() {} module.exports = { activate, deactivate, }; 。 vscode用来js开发插件时,可以使用官方提供的脚手架yo code来生成对应的项目。首先需要全局安装yo和generator-code这两个包,然后执行yo code命令,按照提示选择New Extension (JavaScript)作为扩展类型,并设置项目名、标识符、描述等信息。在生成的项目中,可以使用VSCode开发者工具和WebView类似于iframe的实现来实现插件的功能。可以通过创建Webview来展示自定义的HTML内容,并通过JavaScript来与插件进行交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值