Extension Manifest

就像 chrome 插件使用 manifest.json 来管理插件的配置一样,vscode 的插件也有一个 manifest,而且就叫 package.json,在这里,我们可以除了可以配置插件的名字,版本号,icon 外,还可以配置插件提供哪些功能,乃至发布所需要的信息。所有字段可以查看 官方文档,本文只谈其中几个与开发发布相关的字段。

Activation Events

Activation Events 是 package.json 里的一个字段,决定了用户安装了一个插件之后,插件什么时候激活,然后开始工作。比如安装之后已启动 vscode 就激活,可以这么写:

"activationEvents": [
"*"
]

如果希望启动完成后激活可以使用 onStartupFinished;

在打开某个类型的文件时激活,如 log 文件:

...
"activationEvents": [
"onLanguage:log"
]
...

更多启动事件可参考 https://code.visualstudio.com/api/references/activation-events

Contribution Points

Contribution Points 可以理解为我们开发的插件要提供什么能力,我们可以在多个方面来拓展 vscode,大到支持一门语言的语法高亮和 lint,小到提供一个命令或者按钮,都在这里定义。比如提供一个命令:

{
"contributes": {
"commands": [
{
"command": "extension.sayHello",
"title": "Hello World", // 提供更友好的名称
"category": "Hello",
"icon": {
"light": "path/to/light/icon.svg",
"dark": "path/to/dark/icon.svg"
}
}
]
}
}

为了实现 extension.sayHello,我们在 extension.ts 通过 commands.registerCommand 来实现这个命令:

vscode.commands.registerCommand('extension.sayHello',() => {
console.log('hello world');
vscode.window.showInformationMessage('hello!')
})

这样当我们 ctrl+shift+p 并输入 sayHello 时,就会执行插件 sayHello 对应的函数。

我们还可以在右键菜单中插入一个选项:

"menus": {
"explorer/context": [
{
"when": "resourceScheme == file",
"command": "extension.base64",
"group": "base64"
}
]
}

上面 这个 json 表示在 vscode 的文件管理器中,添加一个将文件转换成 base64 的右键菜单。效果如下:

完整代码见 img2base64,所有的 contribute point 见 https://code.visualstudio.com/api/references/contribution-points

发布可能会遇到的问题

发布主要是用到 vsce 这个工具进行发布。主要会用到几个命令:

vsce create-publisher (publisher name) #创建一个publisher
vsce login (publisher name) # 使用publisher name登录
$ cd myExtension
$ vsce package
# myExtension.vsix generated
$ vsce publish
# <publisherID>.myExtension published to VS Code MarketPlace

然后建议先完整看一遍官方的发布到插件市场的 教程。需要注意的地方是在生成 token 的时候,需要严格按照文档来操作,如果后续发布时遇到的登录报 401 的问题,请参考下面的链接。

  • engines

用于标记插件所需的最低版本,如果没有使用很新的 api,建议还是往下设几个版本,以支持不是最新的 vscode,如果没有使用不兼容的 api, 设成 * 也可以

	"engines": {
"vscode": "*"
}
  • token 401 问题

    确保你的 token 生成时 orgnization 选的是 All accessiable orgnizations,

https://github.com/microsoft/vscode-vsce/issues/11

希望本文可以帮助大家少踩些坑(完)

vscode 插件配置指北的更多相关文章

  1. Kinect_V1在Debian testing的配置指北

    在Linux下驱动Kinect V1现在有两种方式,一种是使用OpenNI + SensorKinect + Nite的方案,一种是使用OpenNI2 + libfreenect的方案,第一种我没有尝 ...

  2. [Android Studio] 2019年Android Studio配置指北

    Android Studio是我学习Android开发路上的第一块绊脚石,新建一个项目,一行代码没动,直接编译不起来,我太难了,所以本文叫指北 本文讲解在9102年如何在国内网络不通畅的情况下流畅的使 ...

  3. Hive安装配置指北(含Hive Metastore详解)

    个人主页: http://www.linbingdong.com 本文介绍Hive安装配置的整个过程,包括MySQL.Hive及Metastore的安装配置,并分析了Metastore三种配置方式的区 ...

  4. vscode 插件 配置

    第一页 第二页 第三页 settings.json配置 { "editor.fontSize": 20, "files.autoSave": "off ...

  5. 【长期更新】迈向现代化的 .Net 配置指北

    1. 欢呼 .NET Standard 时代 我现在已不大提 .Net Core,对于我来说,未来的开发将是基于 .NET Standard,不仅仅是 面向未来 ,也是 面向过去:不只是 .Net C ...

  6. Django快速开发实践:Drf框架和xadmin配置指北

    步骤 既然是快速开发,那废话不多说,直接说步骤: 安装Djagno 安装Django Rest Framework 定义models 定义Rest framework的serializers 定义Re ...

  7. VSCode保存插件配置并使用 gist 管理代码片段

    setting sync 保存配置 由于公司和家里都使用 VSCode 作为主要编辑器,同步配置是最紧要的.VSCode 提供了setting sync插件,很方便我们同步插件配置.引用网上教程: 在 ...

  8. VScode 插件推荐与C/C++配置

    以下是我经常用到的VScode插件.由于插件本身具有详细的配置和介绍,不对插件本身的安装配置进行说明,仅仅支出这些插件的主要功能.具体使用强烈推荐看一下安装插件后的说明,大多数的问题和设置都可以找到, ...

  9. git宝典—应付日常工作使用足够的指北手册

    最近公司gitlab又迁移,一堆git的命令骚操作,然鹅git命令,感觉还是得复习下——其实,git现在界面操作工具蛮多,比如intellij 自带的git操作插件就不错,gitlab github ...

随机推荐

  1. P2783 有机化学之神偶尔也会作弊 题解

    题面 前言 这道题以前还是道(水)黑题,现在怎么降紫了???? 前置芝士 tarjain 缩点 倍增求LCA或树剖求LCA 脑子... 题意 给你一个无向图,要求你把所有的环缩成一个点.在新得到的图上 ...

  2. HashMap 、ConcurrentHashMap知识点全解析

    散列表 在了解hashmap之前,要先知道什么是散列表,因为hashmap就是在散列表结构基础上改造而成的.散列表,也叫哈希表,是根据关键码值(key value)而直接进行访问的数据结构.也就是说, ...

  3. 二进制K8S集群使用Bootstrap Token 方式增加Node

    TLS Bootstraping:在kubernetes集群中,Node上组件kebelet和kube-proxy都需要与kube-apiserver进行通信,为了增加传输安全性,采用https方式, ...

  4. 用-pthread替代-lpthread

    -pthread 在多数系统中,-pthread会被展开为"-D_REENTRANT -lpthread".作为编译参数可以通知系统函数开启多线程安全特性,比如将errno定义线程 ...

  5. <二分查找+双指针+前缀和>解决子数组和排序后的区间和

    <二分查找+双指针+前缀和>解决子数组和排序后的区间和 题目重现: 给你一个数组 nums ,它包含 n 个正整数.你需要计算所有非空连续子数组的和,并将它们按升序排序,得到一个新的包含 ...

  6. Helium文档4-WebUI自动化-write写入

    前言 write方法是模拟在输入框中写入数据 write入参说明 def write(text, into=None):   """   :param text: The ...

  7. Linux命令的执行

    为什么在提示符下命令可以被执行呢? 执行命令过程 输入命令后回车,提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来 shell本身也是一个程序,只不过 ...

  8. 技术实操丨HBase 2.X版本的元数据修复及一种数据迁移方式

    摘要:分享一个HBase集群恢复的方法. 背景 在HBase 1.x中,经常会遇到元数据不一致的情况,这个时候使用HBCK的命令,可以快速修复元数据,让集群恢复正常. 另外HBase数据迁移时,大家经 ...

  9. 使用浏览器抓取QQ音乐接口(歌曲篇)

    前言 前面我们获取了歌曲的排行榜的数据,我们现在需要实现歌曲播放 前面我们写了一段函数来得到了回调的数据,现在我们需要使用这一段数据,来实现播放歌曲 完整代码 <!DOCTYPE html> ...

  10. CAP-微服务间通信实践

    微服务间通信常见的两种方式 由于微服务架构慢慢被更多人使用后,迎面而来的问题是如何做好微服务间通信的方案.我们先分析下目前最常用的两种服务间通信方案. gRPC(rpc远程调用) gRPC-微服务间通 ...