VSCode插件开发全攻略之package.json详解

 更新时间:2020年05月07日 14:33:25   作者:快说我是谁!  
这篇文章主要介绍了VSCode插件开发全攻略之package.json的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

package.json

在详细介绍vscode插件开发细节之前,这里我们先详细介绍一下vscode插件的package.json写法,但是建议先只需要随便看一下,了解个大概,等后面讲到具体细节的时候再回过头来看。

如下是package.json文件的常用配置,当然这里还不是全部:

{
	// 插件的名字,应全部小写,不能有空格
 "name": "vscode-plugin-demo",
	// 插件的友好显示名称,用于显示在应用市场,支持中文
 "displayName": "VSCode插件demo",
	// 描述
 "description": "VSCode插件demo集锦",
	// 关键字,用于应用市场搜索
 "keywords": ["vscode", "plugin", "demo"],
	// 版本号
 "version": "1.0.0",
	// 发布者,如果要发布到应用市场的话,这个名字必须与发布者一致
 "publisher": "sxei",
	// 表示插件最低支持的vscode版本
 "engines": {
  "vscode": "^1.27.0"
 },
	// 插件应用市场分类,可选值: [Programming Languages, Snippets, Linters, Themes, Debuggers, Formatters, Keymaps, SCM Providers, Other, Extension Packs, Language Packs]
 "categories": [
  "Other"
 ],
	// 插件图标,至少128x128像素
 "icon": "images/icon.png",
	// 扩展的激活事件数组,可以被哪些事件激活扩展,后文有详细介绍
 "activationEvents": [
  "onCommand:extension.sayHello"
 ],
	// 插件的主入口
 "main": "./src/extension",
	// 贡献点,整个插件最重要最多的配置项
 "contributes": {
		// 插件配置项
		"configuration": {
   "type": "object",
			// 配置项标题,会显示在vscode的设置页
   "title": "vscode-plugin-demo",
   "properties": {
				// 这里我随便写了2个设置,配置你的昵称
    "vscodePluginDemo.yourName": {
     "type": "string",
     "default": "guest",
     "description": "你的名字"
    },
				// 是否在启动时显示提示
    "vscodePluginDemo.showTip": {
     "type": "boolean",
     "default": true,
     "description": "是否在每次启动时显示欢迎提示!"
    }
   }
  },
		// 命令
  "commands": [
   {
    "command": "extension.sayHello",
    "title": "Hello World"
   }
  ],
		// 快捷键绑定
  "keybindings": [
   {
    "command": "extension.sayHello",
    "key": "ctrl+f10",
    "mac": "cmd+f10",
    "when": "editorTextFocus"
   }
  ],
		// 菜单
  "menus": {
			// 编辑器右键菜单
   "editor/context": [
    {
					// 表示只有编辑器具有焦点时才会在菜单中出现
     "when": "editorFocus",
     "command": "extension.sayHello",
					// navigation是一个永远置顶的分组,后面的@6是人工进行组内排序
     "group": "navigation@6"
    },
    {
     "when": "editorFocus",
     "command": "extension.demo.getCurrentFilePath",
     "group": "navigation@5"
    },
    {
					// 只有编辑器具有焦点,并且打开的是JS文件才会出现
     "when": "editorFocus && resourceLangId == javascript",
     "command": "extension.demo.testMenuShow",
     "group": "z_commands"
    },
    {
     "command": "extension.demo.openWebview",
     "group": "navigation"
    }
   ],
			// 编辑器右上角图标,不配置图片就显示文字
   "editor/title": [
    {
     "when": "editorFocus && resourceLangId == javascript",
     "command": "extension.demo.testMenuShow",
     "group": "navigation"
    }
   ],
			// 编辑器标题右键菜单
   "editor/title/context": [
    {
     "when": "resourceLangId == javascript",
     "command": "extension.demo.testMenuShow",
     "group": "navigation"
    }
   ],
			// 资源管理器右键菜单
   "explorer/context": [
    {
     "command": "extension.demo.getCurrentFilePath",
     "group": "navigation"
    },
    {
     "command": "extension.demo.openWebview",
     "group": "navigation"
    }
   ]
  },
		// 代码片段
  "snippets": [
   {
    "language": "javascript",
    "path": "./snippets/javascript.json"
   },
   {
    "language": "html",
    "path": "./snippets/html.json"
   }
  ],
		// 自定义新的activitybar图标,也就是左侧侧边栏大的图标
  "viewsContainers": {
   "activitybar": [
    {
     "id": "beautifulGirl",
     "title": "美女",
     "icon": "images/beautifulGirl.svg"
    }
   ]
  },
		// 自定义侧边栏内view的实现
  "views": {
			// 和 viewsContainers 的id对应
   "beautifulGirl": [
    {
     "id": "beautifulGirl1",
     "name": "国内美女"
    },
    {
     "id": "beautifulGirl2",
     "name": "国外美女"
    },
    {
     "id": "beautifulGirl3",
     "name": "人妖"
    }
   ]
  },
		// 图标主题
  "iconThemes": [
   {
    "id": "testIconTheme",
    "label": "测试图标主题",
    "path": "./theme/icon-theme.json"
   }
  ]
 },
	// 同 npm scripts
 "scripts": {
  "postinstall": "node ./node_modules/vscode/bin/install",
  "test": "node ./node_modules/vscode/bin/test"
 },
	// 开发依赖
 "devDependencies": {
  "typescript": "^2.6.1",
  "vscode": "^1.1.6",
  "eslint": "^4.11.0",
  "@types/node": "^7.0.43",
  "@types/mocha": "^2.2.42"
 },
	// 后面这几个应该不用介绍了
 "license": "SEE LICENSE IN LICENSE.txt",
 "bugs": {
  "url": "https://github.com/sxei/vscode-plugin-demo/issues"
 },
 "repository": {
  "type": "git",
  "url": "https://github.com/sxei/vscode-plugin-demo"
 },
	// 主页
 "homepage": "https://github.com/sxei/vscode-plugin-demo/blob/master/README.md"
}

activationEvents

插件在VS Code中默认是没有被激活的,哪什么时候才被激活呢?就是通过activationEvents来配置,目前支持一下8种配置:

  • onLanguage:${language}
  • onCommand:${command}
  • onDebug
  • workspaceContains:${toplevelfilename}
  • onFileSystem:${scheme}
  • onView:${viewId}
  • onUri
  • *

都比较好懂,我就不做一一介绍了,举个例子,如果我配置了onLanguage:javascript,那么只要我打开了JS类型的文件,插件就会被激活。

重点说一下*,如果配置了*,只要一启动vscode,插件就会被激活,为了出色的用户体验,官方不推荐这么做。看到这里相信大家知道了我们前面HelloWord里面为啥要配置onCommand了吧。

3.contributes

  • configuration:设置
  • commands:命令
  • menus:菜单
  • keybindings:快捷键绑定
  • languages:新语言支持
  • debuggers:调试
  • breakpoints:断点
  • grammars
  • themes:主题
  • snippets:代码片段
  • jsonValidation:自定义JSON校验
  • views:左侧侧边栏视图
  • viewsContainers:自定义activitybar
  • problemMatchers
  • problemPatterns
  • taskDefinitions
  • colors

参考

extension-manifest

activation-events

贡献点清单

总结

到此这篇关于VSCode插件开发全攻略之package.json详解的文章就介绍到这了,更多相关VSCode插件开发 package.json内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 聊聊Qt+OpenCV联合开发之图像的创建与赋值问题

    聊聊Qt+OpenCV联合开发之图像的创建与赋值问题

    这篇文章主要介绍了Qt+OpenCV联合开发之图像的创建与赋值问题,给大家介绍了图像的克隆及拷贝问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • C++ 中strcpy标准写法实例详解

    C++ 中strcpy标准写法实例详解

    这篇文章主要介绍了C++ 中strcpy标准写法实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • c语言中&的用法示例代码

    c语言中&的用法示例代码

    这篇文章主要给大家介绍了关于c语言中&的用法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • C++实现LeetCode(63.不同的路径之二)

    C++实现LeetCode(63.不同的路径之二)

    这篇文章主要介绍了C++实现LeetCode(63.不同的路径之二),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C语言之地址传递和引用传递的问题

    C语言之地址传递和引用传递的问题

    这篇文章主要介绍了C语言之地址传递和引用传递的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • C语言入门篇--学习选择,if,switch语句以及代码块

    C语言入门篇--学习选择,if,switch语句以及代码块

    本篇文章是基础篇,适合c语言刚入门的朋友,本文主要带大家学习一下C语言的选择,if,switch语句及代码块,帮助大家快速入门c语言的世界,更好的理解c语言
    2021-08-08
  • 使用Libmicrohttpd搭建内嵌(本地)服务器的方法

    使用Libmicrohttpd搭建内嵌(本地)服务器的方法

    下面小编就为大家带来一篇使用Libmicrohttpd搭建内嵌(本地)服务器的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • C++控制台用定时器实例代码

    C++控制台用定时器实例代码

    这篇文章主要介绍了C++控制台用定时器实例代码,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • 举例讲解C语言链接器的符号解析机制

    举例讲解C语言链接器的符号解析机制

    链接器的工作主要分为两个阶段:符号解析和重定位,符号解析的功能是将每个模块符号引用绑定到一个确切的符号定义,这里我们就来举例讲解C语言链接器的符号解析机制
    2016-05-05
  • C语言转义字符详解

    C语言转义字符详解

    这篇文章主要介绍了C语言转义字符详解,本篇文章通过简要的案例,讲解了C语言转义字符该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07

最新评论