【vscode插件开发】(一)工程搭建、命令运行及调试

已被阅读 1111 次 | 文章分类:日常随笔 | 2022-03-02 22:28

开发环境:nodejs和vscode;先确保安装了nodejs环境和vscode编辑器;编辑器用其他也可以; 也是第一次尝试;中间肯定会有坑,所以就记录下;

1 全局安装官方脚手架

打开命令终端,执行 npm install -g yo generator-code;等待几分钟

                                            
npm install -g yo generator-code
                                            
                                        

/net/upload/image/20220302/d7de51d974eb48618bcc133b18f76b38.jpg

2 配置工程

新建工程目录,在目录打开命令终端,执行 yo code;如下

/net/upload/image/20220302/24155d665c554fb28dc675ecf94a7621.png

设置参数如下:

/net/upload/image/20220302/bc29ccd4a5624e05bcae051a333d0f69.png

稍等片刻,我们的工程就初始化完成了

/net/upload/image/20220302/a7ae915a845f44678ae7ffabd596c831.png

工程目录如下:

/net/upload/image/20220302/2eed1a2d436b4f2884e300918ceefbdd.png

/net/upload/image/20220302/d90f984d77f74e7aa8d323159c3aad27.png

以上工程目录文件的具体含义和package.json内部配置项后面会解释下;现在咱优先跑起来一个程序呗

3 编译运行

3.1 运行工程

按F5编译运行;正常的话,会新弹出一个vsc窗口,即扩展宿主环境;这里遇到第一个坑;如下所示,一直处于"正在生成",并没有弹出宿主环境窗口;

/net/upload/image/20220302/75b8cf57c6ce4672a75ce0b4f20b9306.png

经过排查,上述问题因为vsc版本过低导致,更新到最新版本即可解决;然后按F5,新弹出一个宿主环境窗口

/net/upload/image/20220302/d9a72c9e9eb946f6ba833a76531c86ba.png

3.2 调用扩展

ctrl+shift+p 输入helloworld,进行测试;右下角出现插件弹窗算是成功了

/net/upload/image/20220302/c8a58342fbe646938a2c08965d1c9a4a.png

4 调试扩展

如下所示,在20行打个断点;然后运行F5

/net/upload/image/20220302/59dadbc542654f09aac1f74ba032f978.png

如下所示,会在断点处定下,这样便于我们调试变量 ;如下的错误暂且不管;

/net/upload/image/20220302/73fb121131e64763bd643ca818516301.png

如下所示,也可在调试控制台中输入变量,查看变量值

/net/upload/image/20220302/55423da9560b4888843ffbfe74396e7f.png

5 自定义命令

5.1 如下代码所示,添加一个命令

                                            
context.subscriptions.push(
		vscode.commands.registerCommand("GeoJsonViewer.askQuestion",  () => { 
			vscode.window.showInformationMessage("How was your day ?", "good", "bad")	
		})
	)
                                            
                                        
                                            
registerCommand方法 用来注册一个命令
showInformationMessage方法 显示弹窗
subscriptions 将注册的命令添加到订阅数组;每个命令都必须添加到订阅订阅器中
                                            
                                        

5.2 配置package.json

需要配置两个地方:如下

/net/upload/image/20220302/c9e82fc0c0b64897ac85a51ba7bd2086.png

activationEvents配置命令在vscode启动的时候激活;contributes配置名称和命令,就是我们在ctrl+shift+p后展示在列表中的信息

F5运行看下效果:在新窗口中ctrl+shift+p,然后选择我们新创建的命令

/net/upload/image/20220302/5c2ef9562b8049298d6efc51827d8ce8.png

右下角会弹出信息

/net/upload/image/20220302/6f314d6102754489a1cda25156fe28de.png

5.3 修改一下上面添加的命令

                                            
showInformationMessage方法返回值其实是promise对象,所以我们可以用await 关键词来接受返回结果;
                                            
                                        

/net/upload/image/20220302/4c1c466f3abf42f78fcbb425877653da.png

                                            
context.subscriptions.push(
		vscode.commands.registerCommand("GeoJsonViewer.askQuestion", async () => {
			let answer = await vscode.window.showInformationMessage("How was your day ?", "good", "bad",)
			if (answer === "bad") {
				vscode.window.showInformationMessage("sorry to hear it")
			} else {
				console.log({ answer })
			}
		})
	)
                                            
                                        

F5运行查看:点击bad选项后,弹出如下信息

/net/upload/image/20220302/dcc0308c019b42188477dab3d428e4cd.png

QQ:3410192267 | 技术支持 微信:popstarqqsmall

Copyright ©2017 xiaobaigis.com . 版权所有 鲁ICP备17027716号