less helper vscode 插件开发

81 阅读2分钟

1. 简介

cloud 在less 内使用了很多的 theme 变量,但是这些变量没有颜色标签和变量值,导致开发的时候不能知道到底是什么颜色。借助vscode 可以开发一款插件这样就能看到颜色效果

下图是没有 颜色效果 。

image.png

而且在设计的design 有很多颜色其实是主题颜色,但是每次手动修改需要找到对应的主题颜色var 修改不方便. 借助 vscode 插件 在将下面的代码黏贴到 less 文件的 实现 颜色到 theme color var 的修改 。 

image.png

开启插件之后 

颜色tooltip

image.png

复制 设计 color 到 less 文件 自动转换成 theme var 变量

从 设计

image.png 黏贴到 less 文件之后 

image.png

2. vscode 开发步骤

可以参考 文档:code.visualstudio.com/api/get-sta…

具体有如下步骤

  1. 安装 必要的工具: npm install -g yo generator-code

  2. 构建插件代码

  3. 在插件代码内设置需要的功能

3. less 插件主要开发技术点

  1. 设置需要监听的语言
  2. 注册到 vscode 插件提供颜色和颜色标签的 provider

image.png

image.png

ZStackColorThemeProvider 内实现了 提供颜色和颜色标签 的 方法

provideDocumentColors 设置要显示的颜色  从当前less 文件内获取到 theme 相关的 var 名称,这些名称都是固定的。将获取的变量信息:行号,列的范围,和颜色构建 ColorInformation ,最后将 ColorInformation 的数组结果返回,vscode 就能显示对应变量的颜色
provideColorPresentations设置鼠标挪到颜色之后,显示的颜色标签 这个方法是在上面方法的数据上返回的。 可以拿到上面方法的行号和列的信息,然后从 文本内容内拿到对应的字符串值,这些值就是 less theme 对应的名称值。然后 获取对应 theme 的颜色字符串。将颜色字符串构建 ColorPresentation ,将 ColorPresentation 数组内容返回。vscode 就会显示 hover 到对应颜色上面的时候显示这个颜色值
workspace.onDidChangeTextDocument实现黏贴的时候,修改主题颜色 成 主题颜色 var  onDidChangeTextDocument在 文件内容修改的时候触发,可以拿到修改的数据内容。拿到数据内容之后和 env.clipboard 内容比较 是否是将 内容黏贴修改导致的文件内容修改,然后得到修改的内容的行号和列好信息,获取修改内容内是主题颜色的的字符串,对当前的编辑器 window.activeTextEditor 使用修改 api editor?.edit 编辑修改的的内容到文档。

4. 发布 插件

参考文档 : code.visualstudio.com/api/working…

  1. 安装 发布工具: npm install -g @vscode/vsce

  2. 按照上述文档注册之后可以得到一个发布token

  3. vsce publish ,会提示输入token 内容

  4. 发布成功,可以在发布站点看到发布信息。发布需要verifying 之后才能在 vscode 安装