手摸手开发一款vscode 代码提示插件 - 概念和代码结构

572 阅读2分钟

「这是我参与2022首次更文挑战的第7天,活动详情查看:2022首次更文挑战」。

背景

前端事件团队写了一个UI库,类似element的Vue类库,使用了一段时间因为没有代码提示写起来很不方便,所以趁势开发了一个代码提示插件,期间翻了很多文档,走了很多坑,特此总结一下

vscode插件

对于前端的程序员来说vscode 肯定不陌生,vscode 是微软推出的代码编辑器,凭借着 功能强大,提示友好,免费! 免费! 免费! 占用内存低尤其是对js和node支持非常好,市场占比很大.

因为vscode 本身也是基于浏览器实现,开发难度只有一点点,下面让我们开始吧

先上个基础展示

因为不会捣鼓视频,麻烦大家点一下 视频演示

vscode的超能力

插件到底是啥,有什么能力,下面咱们简单介绍一下 基于Electron,可以使用node,node能干啥,那就可以干啥,为所欲为,犹如脱缰的野马,只要你想就能实现 具体如下

  • 自定义命令
  • 快捷键
  • 自定义菜单项
  • 自定义跳转
  • 自动补全
  • 悬浮提示
  • 新增语言支持
  • 语法检查
  • 语法高亮
  • 代码格式化 image.png

上代码 -- hello-world

首先安装脚手架

npm install -g yo generator-code
yo code

image.png

代码结构

├── CHANGELOG.md
├── README.md 
├── extension.js  //插件入口
├── jsconfig.json
├── package-lock.json
├── package.json //配置文明
├── test
│   ├── runTest.js
│   └── suite
│       ├── extension.test.js
│       └── index.js
└── vsc-extension-quickstart.md

调试

image.png 运行以上两步后,vscode 会开启一个新的窗口长这个样子

image.png 接下来 cmd+shift+p 调出面板 输入helloWorld ,会弹出

image.png

{
	"name": "liuzhenxing-demo", //插件名
	"displayName": "liuzhenxing-demo", //在插件市场的名字 两个名字最好统一
	"description": "测试",
	"version": "0.0.1", // 插件版本号
	"engines": {
		"vscode": "^1.64.0"
	},
	"categories": [
		"Other"
	],
	"activationEvents": [ // 激活命令组,可以配置多个,类型很多代码提示使用 onLanguage 后续会有例子
		"onCommand:liuzhenxing-demo.helloWorld"
	],
	"main": "./extension.js", //入口文件
	"contributes": {
		"commands": [ //命令
			{
				"command": "liuzhenxing-demo.helloWorld",
				"title": "Hello World"
			}
		]
	},
	"scripts": {
		"lint": "eslint .",
		"pretest": "npm run lint",
		"test": "node ./test/runTest.js"
	},
	"devDependencies": {
		"@types/vscode": "^1.64.0",
		"@types/glob": "^7.2.0",
		"@types/mocha": "^9.0.0",
		"@types/node": "14.x",
		"eslint": "^8.6.0",
		"glob": "^7.2.0",
		"mocha": "^9.1.3",
		"typescript": "^4.5.4",
		"@vscode/test-electron": "^2.0.3"
	}
}

这是最基础的工程文件后续明天咱们继续更新