vscode插件开发--快速插入图片相关css

闲来无事,将之前写的一个vscode插件翻出来写个教程。此插件之前没有上传到vscode的插件库上,这才顺带整理一下发布流程。

插件功能

很简单就是,快速的在编辑器里面插入css代码,不需要自己手工去ps量尺寸,或者看图片的尺寸啥的了。估计有大佬说着有啥用了,对于小小的只写scss的小菜鸟来说还是挺有必要的,可以节约几秒的。 这个功能,貌似less是有这个功能,如下:

.test{
    width:image-width("file.png");
    height: image-height("file.png");
}
复制代码

如果你是less爱好者可以不用往下看啦,然而对于我只习惯写sass来说貌似没这个函数,或者有我不知道。所以我把几个轮子合到了一起,做了一个轮子搬运工。附上git地址 插件地址

快速看看操作流程

  • 正常写样式流程
    • 测量图片尺寸
    • 再敲代码
  • 插件流程
    • 调用命令
    • 选择对应图片(自动填充代码)
      我去,貌似流程一样呀,?,我就是来搞笑的。

主要逻辑

  • vscode获取配置信息
import {
  workspace,
} from 'vscode';
/**
 * 获取配置
 */
export const getConfig = (str: string): any => {
  return workspace.getConfiguration('imgstyle').get(str);
};
<!--对呀在vscode setting.json里面 imgstyle.tpl,imgstyle.path-->
//获取path
getConfig('path');
复制代码
  • 根据配置信息获取图片集globby
//上面获取到的path 是一个过滤条件 默认是数组["src/**/*.{png,jpg,gif,webp}"] 根据个人喜好设置,具体过滤条件可以看globby的配置项
await globby("src/**/*.{png,jpg,gif,webp}")
//这样就获取到src下面所有图片的path数组了
复制代码
  • 调用vscode的选择器,从图片path数组里面选择一个
import {
  window,
} from 'vscode';
// 转换为pick配置项
  const quickPickArray = imgsArray.map((v: string) => {
    return {
      label: path.parse(v).base, //选择项标签
      description: path.relative(workspace.rootPath || __dirname, v),//选择项描述
      src: v,
    };
  });
  // 打开vscode的选择器
  const action = await window.showQuickPick(quickPickArray);
  // 选择完成后action就是一个object对象,主要用到src 
复制代码
  • 获取所选图片信息,jimp一个不错的图片处理库
const jimp = require('jimp');
// 读取图片
const imgInfo = await jimp.read(action.src);
// console.log('imgInfo', imgInfo.bitmap.width);
const {
width,
height
} = imgInfo.bitmap;
复制代码
  • 获取渲染模板同上面的imgStyle.path的获取方法一样
  • 模板渲染用的是loadash.template,目前只是暴露了width,height,还有文件相对当前编辑的路径src,所以默认模板是 "imgstyle.tpl": "width: ${width}px;height: ${height}px;background-image:url(${src});",。在这个";"是有用换行替换方便css对齐的,所以目前还是只在样式里支持而已。具体可以看源码,这里不多说具体
import * as _ from 'lodash';

const fn = _.template("width: ${width}px;height: ${height}px;background-image:url(${src});");
<!--转换成字符串-->
fn({
    width: 10,
    height: 10,
    src: 'xxx'
});
复制代码
  • 当前编辑器光标处插入文本
const {
    activeTextEditor //当前编辑页
 } = window;
 
 activeTextEditor.edit((editBuilder) => {
  //获取光标位置
  var position = new Position(activeTextEditor.selection.active.line, activeTextEditor.selection.active.character);
  //在光标位置插入字符串
  editBuilder.insert(position, 'width:...');
});
  
复制代码
  • 以上完成了一个基本的操作逻辑

vscode 配置相关

  • 注册命令 ,把上面的方法封装好引入到extension.ts
// 注册命令 
let disposable = vscode.commands.registerCommand('linz.imgInsert', () => {
    // The code you place here will be executed every time your command is executed
    imgInsert();
    // Display a message box to the user
    // vscode.window.showInformationMessage('hellow');
});
复制代码
  • 在package.json中监听命令配置
"activationEvents": [
    "onCommand:linz.imgInsert"
],
"contributes": {
        "commands": [
            {
                "command": "linz.imgInsert",
                "title": "image insert"
            }
        ],
        
    },
复制代码
  • 绑定快捷键 package.json 里面 的contributes中添加字段keybindings
"keybindings": [{
    "command": "linz.imgInsert",
    "key": "ctrl+4",
    "mac": "cmd+4",
    "when": "editorTextFocus" // 编辑文本时可以调用命令
}],
复制代码
  • 增加配置信息package.json 里面 的contributes中添加字段configuration
"configuration": {
    "type": "object",
    "title": "imgstyle configuration",
    "properties": {
        "imgstyle.tpl": {
            "type": "string",
            "default": "test",
            "description": "imgstyle path settings"
        },
        "imgstyle.path": {
            "type": "Array",
            "default": [
                "src/**/*.{png,jpg,gif,webp}"
            ],
            "description": "imgstyle path settings"
        }
    }
}
复制代码

发布到vscode插件库中,官方教程

  • 安装命令 npm install -g vsce 此包用于打包并发布
  • 获取token Personal Access Tokens., 链接是我自己的个人页面,没注册账号的可以自行去注册,偷懒复制官方的图片

  • 复制好token,红色划掉的部分。
  • 打开命令行注册token方便不输入密码之类的就提交插件
vsce create-publisher (publisher name)
<!--会要求输入用户名 邮箱 touken-->
复制代码
  • 直接发布代码vsce publish

然后就可以静静的发呆等发布完成了,小伙伴们最好开发插件的使用用npm install 插件哦 ,不要用yarn 不然无法编译发布哦,这vsce貌似还没支持yarn;

转载于:https://juejin.im/post/5afe77246fb9a07ab11169ef

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Visual Studio Code是一个轻量级但功能强大的源代码编辑器,可在您的桌面上运行,并且可用于Windows,macOS和Linux。它具有对JavaScript,TypeScript和Node.js的内置支持,并具有丰富的其他语言(例如C ++,C#,Java,Python,PHP,Go)和运行时(例如.NET和Unity)扩展的生态系统。 特点: 适用于macOS,Linux和Windows Visual Studio Code支持macOS,Linux和Windows-因此无论平台如何,您都可以开始运行。 轻松编辑,构建和调试 本质上,Visual Studio Code具有闪电般的快速源代码编辑器,非常适合日常使用。凭借对数百种语言的支持,VS Code可以帮助您通过语法高亮显示,括号匹配,自动缩进,选择框,摘要等即时提高工作效率。直观的键盘快捷键,轻松的自定义功能和社区提供的键盘快捷键映射使您可以轻松地浏览代码。 对于认真的编码,您经常会受益于对代码有更多了解的工具,而不仅仅是文本块。Visual Studio Code包括对IntelliSense代码完成,丰富的语义代码理解和导航以及代码重构的内置支持。 并且当编码变得困难时,艰难就得到了调试。调试通常是开发人员在更精简的编码体验中最会错过的一项功能,因此我们实现了它。Visual Studio Code包含一个交互式调试器,因此您可以单步执行源代码,检查变量,查看调用堆栈并在控制台中执行命令。 VS Code还与构建和脚本工具集成,以执行常见任务,从而使日常工作流程更快。VS Code支持Git,因此您可以使用源代码管理而无需离开编辑器,包括查看挂起的更改差异。 强大的,可扩展的架构 在结构上,Visual Studio Code结合了Web,本地和特定于语言的最佳技术。VS Code使用Electron,将JavaScript和Node.js等网络技术与本机应用程序的速度和灵活性相结合。VS Code使用了基于工业强度HTML的同一编辑器的更新,更快的版本,该编辑器为“ Monaco”云编辑器,Internet Explorer的F12工具和其他项目提供了支持。此外,VS Code使用工具服务体系结构,使其能够与支持Visual Studio的许多相同技术集成,包括Roslyn for .NET,TypeScript,Visual Studio调试引擎等。 Visual Studio Code包含一个公共可扩展性模型,开发人员可以使用该模型来构建和使用扩展,并丰富自定义其edit-build-debug体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值