(04)vite 插件 plugins

文章目录

    • 怎么使用插件
    • vite官网和社区分别提供了许多vite 插件
    • 手写vite插件
      • 插件怎么命名
      • 插件什么时候执行
      • 插件引用场景控制
      • 可以使用的钩子

在这里插入图片描述

怎么使用插件

通过在vite.config.js中配置不同的插件使用

import { defineConfig } from "vite";
// 自定义插件
import myDemoPlugins  from "./plugins/ViteAliases.js";export default defineConfig({plugins:[myDemoPlugins()]
});

./plugins/ViteAliases.js

// vite 插件是一个函数通常,这个函数必须返回给vite一个配置对象
module.exports = () => {return {// name: "vite-plugin-vue-demo",// enforce: "pre",config: (config, env) => {// config: 目前的一个配置对象// env: mode:string , command: stringconsole.log(config, env);return {resolve: {},};}};
};

vite官网和社区分别提供了许多vite 插件

vite官方插件 https://vitejs.cn/vite3-cn/plugins/#official-plugins
vite社区插件 https://github.com/vitejs/awesome-vite#plugins

跟webpack的生态相比,vite确实还比不过,如果没有你想要的插件和配置,可能需要自己动手写插件。

手写vite插件

在手写vite插件前,需要了解vite官网提供的一些vite相关的生命周期,以及这些生命周期对应的一些钩子函数。

vite 官网 插件 API https://vitejs.cn/vite3-cn/guide/api-plugin.html

插件怎么命名

export default function myPlugin() {return {name: 'xxxx你的插件名称'}
}

如果你的插件只适用于特定的框架,它的名字应该遵循以下前缀格式:

vite-plugin-vue- 前缀作为 Vue 插件
vite-plugin-react- 前缀作为 React 插件
vite-plugin-svelte- 前缀作为 Svelte 插件

对于 Vite 专属的插件:

Vite 插件应该有一个带 vite-plugin- 前缀、语义清晰的名称。
在 package.json 中包含 vite-plugin 关键字。
在插件文档增加一部分关于为什么本插件是一个 Vite 专属插件的详细说明(如,本插件使用了 Vite 特有的插件钩子)。

插件什么时候执行

一个 Vite 插件可以额外指定一个 enforce 属性(类似于 webpack 加载器)来调整它的应用顺序。enforce 的值可以是pre 或 post。解析后的插件将按照以下顺序排列:

	export default function myPlugin() {return {name: 'xxxx你的插件名称',enforce: "pre"}}
  1. Alias
  2. 带有 enforce: ‘pre’ 的用户插件
  3. Vite 核心插件
  4. 没有 enforce 值的用户插件
  5. Vite 构建用的插件
  6. 带有 enforce: ‘post’ 的用户插件
  7. Vite 后置构建插件(最小化,manifest,报告)

插件引用场景控制

默认情况下插件在开发(serve)和构建(build)模式中都会调用。如果插件只需要在预览或构建期间有条件地应用,请使用 apply 属性指明它们仅在 ‘build’ 或 ‘serve’ 模式时调用:

function myPlugin() {return {name: 'build-only',apply: 'build' // 或 'serve'}
}

同时,还可以使用函数来进行更精准的控制:

apply(config, { command }) {// 非 SSR 情况下的 buildreturn command === 'build' && !config.build.ssr
}

可以使用的钩子

通用钩子 https://vitejs.cn/vite3-cn/guide/api-plugin.html#universal-hooks
vite独有的钩子 https://vitejs.cn/vite3-cn/guide/api-plugin.html#vite-specific-hooks

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习之随机森林 python

随机森林是一种集成学习方法,它是由多个决策树组成的模型,其中每棵树都是随机生成的。随机深林包括两种主要类型:随机森林和极端随机树。 废话不说上代码 import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import…

Git账户密码http方式的配置

Git账户密码http方式的配置 入门 git在提交时每次都需要输入密码和账号信息,可以将账号和密码进行持久化存储, 当git push的时候输入一次用户名和密码就会被记录, 不需要每次输入,提高效率,进行一下配置&#xff1…

2023_Spark_实验三十:测试Flume到Kafka

实验目的:测试Flume采集数据发送到Kafka 实验方法:通过centos7集群测试,将flume采集的数据放到kafka中 实验步骤: 一、 kafka可视化工具介绍 Kafka Tool是一个用于管理和使用Apache Kafka集群的GUI应用程序。 Kafka Tool提供了…

jmx_exporter安装

下载 wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.13.0/jmx_prometheus_javaagent-0.13.0.jar 创建jmx_exporter.yml文件 文件内容为: rules: - pattern: ".*" 配置tomcatpinter/apache-tomcat-8.5.38/bin/ca…

基于 Flink 的典型 ETL 场景实现方案

目录 1.实时数仓的相关概述 1.1 实时数仓产生背景 1.2 实时数仓架构 1.3 传统数仓 vs 实时数仓 2.基于 Flink 实现典型的 ETL 场景 2.1 维表 Join ■ 2.1.1 预加载维表 方案 1: 方案 2: ■ 2.1.2 热存储关联 ■ 2.1.3 广播维表 ■ 2.1.4 Tem…

解决腾讯云CentOS 6硬盘空间不足问题:从快照到数据迁移

引言: 随着数据的不断增加,服务器硬盘空间不足变成了许多运维人员必须面对的问题。此主机运行了httpd(apache服务),提供对外web访问服务,web资源挂载在**/data/wwwroot目录下,http日志存放在/data/wwwlogs目录下&…

JavaWeb笔记之前端开发JavaScript

一、引言 1.1 简介 JavaScript一种解释性脚本语言,是一种动态类型、弱类型、基于原型继承的语言,内置支持类型。 它的解释器被称为JavaScript引擎,作为浏览器的一部分,广泛用于客户端的脚本语言,用来给HTML网页增加…

51单片机定时器

51单片机有两个16位定时器,今天复习了一下使用方法,发现当初刚开始学习51单片机时并没有记录,特此今天补上这篇博客。 下面是定时器的总览示意图,看到这个图就能想到定时器怎么设置,怎么开始工作。 第一步&#xff1a…

还在用nvm?来试试更快的node版本管理工具——fnm

前言 📫 大家好,我是南木元元,热衷分享有趣实用的文章,希望大家多多支持,一起进步! 🍅 个人主页:南木元元 目录 什么是node版本管理 常见的node版本管理工具 fnm是什么 安装fnm …

【超详细】基于单片机控制的十字道路口交通灯控制

目录 最终效果 一、设计任务 二、设计报告 1 设计说明 1.1功能分析 1.1.1整体系统功能分析 1.1.2显示状态功能分析 1.1.3设置状态功能分析 1.1.4紧急状态功能分析 1.2方案比选 1.2.1车辆LED数码管倒计时显示板块 1.2.2车辆信号灯显示板块 1.2.3行人信号灯显示板块 …

高通平台开发系列讲解(SIM卡篇)SIM软件架构介绍

文章目录 一、SIM软件架构二、MMG SDI Task三、GSTK Task四、Simlock Task沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇文章将介绍SIM的相关组件。 SIM软件架构: SIM软件架构指的是与SIM卡(Subscriber Identity Module,订阅者身份模块)相关的软件系统设计和…

Web请求与响应

目录 Postman Postman简介 Postman的使用 请求 简单参数 实体参数 数组参数 集合参数 日期参数 Json参数 路径参数 响应 ResponseBody 统一响应结果 Postman Postman简介 postman是一款功能强大的网页调试与发送网页http请求的Chrome插件,常用于进行…

Python 爬虫之下载视频(一)

爬取某平台视频 文章目录 爬取某平台视频前言一、大致内容二、基本思路三、代码编写1.引入库2.前期准备3.获取视频标题和地址3.下载保存视频 总结 前言 今天写个从好K视频平台爬取正在播放的视频,并下载保存到本地。 注意:建议大家先看看我之前的比较简…

u盘加密软件合辑丨u盘怎么上锁某个文件夹

毫无疑问,U盘是我们生活中最常使用的移动储存设备,常见的U盘普遍没有使用限制,任何人都可以浏览其中的数据,这就可能导致数据泄密和隐私泄露,那么普通U盘怎么变成加密U盘呢? 一、上锁某个U盘文件夹 可以将…

【线性代数】两个向量组等价,其中一个向量组线性无关,另一个向量组也是线性无关吗?

一、问题 两个向量组等价,其中一个向量组线性无关,另一个向量组也是线性无关吗? 二、答案 不一定,当两个向量组中的向量个数也相同时,结论才成立.若向量个数不相同,结论不成立. 例如: 向量组一:(1,0),(0,1) 向量组二:(1,0),(0,1),(1,1) 两…

【大数据实训】python石油大数据可视化(八)

2014到2020年石油加工产品产量数据处理分析 一、任务描述 石油是工业的命脉。 一直到2020年,我国原油产量基本处于平稳的状态,大部分原油来自国外进口;中国原油加工产量在华东、东北地区占比较大,华南地区相对较少。原油的加工…

去掉乘法运算的加法移位神经网络架构

[CVPR 2020] AdderNet: Do We Really Need Multiplications in Deep Learning? 代码:https://github.com/huawei-noah/AdderNet/tree/master 核心贡献 用filter与input feature之间的L1-范数距离作为“卷积层”的输出为了提升模型性能,提出全精度梯度…

CSS自适应分辨率 amfe-flexible 和 postcss-pxtorem:大屏高宽自适应问题

前言 继上篇《CSS自适应分辨率 amfe-flexible 和 postcss-pxtorem》。 发现一个有趣的问题,文件 rem.js 中按照宽度设置自适应,适用于大多数页面,但当遇到大屏就不那么合适了。 问题 使用宽度,注意代码第2 和 4 行:…

补题与周总结:leetcode第 376 场周赛

文章目录 复盘与一周总结2967. 使数组成为等数数组的最小代价(中位数贪心 回文数判断)2968. 执行操作使频率分数最大(中位数贪心 前缀和 滑窗) 复盘与一周总结 wa穿了第3题,赛时其实想到了思路:中位数贪心…

C#上位机与欧姆龙PLC的通信03----创建项目工程

1、创建仿真PLC 这是一款CP1H-X40DR-A的PLC,呆会后面创建工程的时候需要与这个类型的PLC类型一致,否则程序下载不到PLC上。 2、创建虚拟串口 首先安装,这个用来创建虚拟串口来模拟真实的串口,也就是上位机上有那种COM口&#xf…