vscode 插件开发指南

1安装nodejs、vscode

2安装插件脚手架 npm install -g yo generator-code

3使用命令创建插件项目

  • yo code

4在vscode中打开项目

5运行调试,按F5键

6在新打开的窗口中按shift+ctrl+p 然后执行命令

7配置右键菜单命令

遇到问题:

1.package.json中vscode版本与本地不匹配

2.创建的项目是js项目,不支持es module标准,所以在写代码的时候要注意,模块化请使用commonjs标准:

//导出
module.exports = class CssRpxProcess {}

//导入
const CssRpxProcess = require("./process");

3.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"
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/635991.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

科大讯飞Nano+耳机套装登场:智能录音转写,办公充电新方案

目录 一、科大讯飞Nano会议耳机:专业会议助手 二、会议狗Kit:即插即用,智能会议新体验 三、努比亚65W氮化镓充电头:全能快充,一充多用 四、产品总结 在这个快节奏的数字化时代,高效沟通与信息处理能力成…

Koupleless 单进程多应用如何解决兼容问题

文|苟振东(花名:盛知) Koupleless 项目 committer 蚂蚁集团技术专家 本文 5789 字 阅读 12 分钟 本篇文章属于 Koupleless 进阶系列文章第二篇,默认读者对 Koupleless 的基础概念、能力都已经了解,如果还…

【VTKExamples::Texture】第六期 TextureThreshold

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例TextureThreshold,并解析接口vtkTexture,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~Y…

ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

网络空间资产梳理

网络空间资产梳理 网络安全建设的实质是对风险的管理,古人云:知己知彼百战不殆。所谓知己,就是要了解自己的资产以及这些资产的脆弱性,知彼就是了解外部威胁及威胁所使用的手段。要做到知己,首先就要对自身的资产进行梳…

虚拟局域网VLAN

前面的是ip地址,后面的子网掩码 hr和财务是俩网段,hr部门发的广播包财务部门也能收到,那么怎么把不同的网段隔离在不同的广播域里呢 如果只有俩部门就用路由器隔离就行了,但是部门一多每一个都用交换机就浪费钱了 可以通过虚拟…

在MySQL数据库中的视图和事务。

视图 view 临时表 作用:优化多表查询的效率 可以将经常使用的连接查询结果使用视图进行保存,避免多次重复的笛卡尔积运算 MySQL数据库在多表查询的时候会自动进行笛卡尔积运算。 如果将来经常要用到某一个多表查询的结果就可以使用视图将这个结果…

代码随想录——路径总和(Leetcode112)需要回顾

题目链接 递归 递归函数什么时候需要返回值? 如果需要搜索整棵二叉树且不需要处理递归返回值,递归函数不要返回值如果需要搜索整棵二叉树且需要处理递归返回值,递归函数需要返回值如果搜索其中一条条件的路径,递归一定需要返回值…

iOS App上架全流程及审核避坑指南

App Store作为苹果官方的应用商店,审核严格周期长一直让用户头疼不已,很多app都“死”在了审核这一关,那我们就要放弃iOS用户了吗?当然不是!本期我们从iOS app上架流程开始梳理,详细了解下iOS app上架的那些…

升级版网创教程wordpress插件自动采集并发布

主要功能: wordpress 插件主题系列支持自动采集并发布。 主要采集: 福缘,中创,冒泡 自动采集各大项目网进行整合发布到自己个人网站 插件话更新,减少网络请求,提升稳定性 代码完美开源 傻瓜式操作,一…

计算机SCI期刊,中科院2区,收稿范围非常广泛!

一、期刊名称 Journal of Web Semantics 二、期刊简介概况 期刊类型:SCI 学科领域:计算机科学 影响因子:2.5 中科院分区:2区 出版方式:开放出版 版面费:$1600 三、期刊征稿范围 《网络语义学杂志》…

Redis实现热点数据排行榜或游戏积分排行榜

数据库中的某张表中存储着文章的浏览量,或者点赞数等,或者游戏积分等数据...... 这些数据的更新在redis中完成,并定时同步到mysql数据库中。 而如果要对这些数据进行排序的话: Redis中的Sorted Set(有序集合)非常适合用于实现排…

ZEDmini使用完全指南

ZEDmini使用 ZED stereolabs 开箱测评 使用说明 ubuntu18.04nvidiacuda10 ubuntu18.04ZED SDK安装和使用 Ubuntu16.04安装NVIDIA显卡驱动 查看显卡信息 redwallredwall-G3-3500:~/catkin_ws$ lspci | grep VGA 00:02.0 VGA compatible controller: Intel Corporation Device …

成功案例(IF=7.4)| 代谢组+16s联合分析助力房颤代谢重构的潜在机制研究

研究背景 心房颤动(AF)是临床上最常见的持续性心律失常,具有显著的发病率和死亡率。高龄是房颤发病率、患病率和进展最显著的危险因素。与年龄在50-59岁之间的参与者相比,80-89岁之间的参与者患房颤的风险增加了9.33倍。目前尚不…

IEEE Transactions on Neural Networks and Learning Systems神经网络和学习系统TNNLS论文投稿须知

一、TNNLS介绍 IEEE Transactions on Neural Networks and Learning Systems作为控制领域的TOP期刊,2024年5月影响因子为10.4,虽然有些下降,之前五年平均影响因子为11.2,但依然是该领域王牌期刊,接收关于神经网络和相…

【软考中级 软件设计师】计算机网络和安全

计算机网络和安全是软件设计师(软考中级)考试中的重要组成部分,它涵盖了网络基础、网络协议、网络架构、网络安全等多个方面。以下是一些核心概念和要点, 计算机网络基础 OSI七层模型:物理层、数据链路层、网络层、传…

《intel开发手册卷3》读书笔记2

IA-32架构的内存管理分为两个部分:分段和分页。分段提供了一种隔离每个进程 或者任务代码、数据和栈模块的机制,保证多个进程或者任务能够在同一个处理器上运 行而不会互相干扰。分页机制实现了传统请求调页的虚拟内存系统,在这种系统中, 程序…

由于删除、修改、重装QT库引起的软件问题@FreeBSD

由于由于删除、修改、重装QT库以及snappy库等,导致很多软件出现了异常,即无法启动,逐个解决问题。 qutebrowser浏览器 报错: qutebrowser报错 No backend library found qutebrowser needs QtWebKit or QtWebEngine, but neith…

自动化测试用例结构

标准的用例结构: 用力标题前提条件用例步骤预期结果实际结果 测试用例对比:

好的架构是进化来的,不是设计来的

很多年前,读了子柳老师的《淘宝技术这十年》。这本书成为了我的架构启蒙书,书中的一句话像种子一样深埋在我的脑海里:“好的架构是进化来的,不是设计来的”。 2015 年,我加入神州专车订单研发团队,亲历了专…