当前位置: 首页 > news >正文

同时将scss全局变量注入、Tailwind样式使用、自己插件配置到vite

将scss或者less变量注入到全局中

理由:定义的全局scss或者混合或函数不想一直导入

来到vite的配置中也就是vite.config.js或者.ts

   css: {preprocessorOptions: {scss: {api: 'modern-compiler',// 如果还有其他的、分号后面在使用@use// 注意:必须使用@useadditionalData: '@use  "@/styles/global.scss" as *;',  }}}

新增Tailwind

看这里

写自己的postcss插件

 question: 为啥要自己写插件answer: 比如说我现在想自己处理某些px转换、我想细微控制等等
  // 源码小满zs、 部分有作者更改interface defaultOptionsType {viewPortWidth: number;mediaQuery?: boolean;unitToConvert: string;}const defaultOptions: defaultOptionsType = {viewPortWidth: 375,mediaQuery: false,unitToConvert: "px",};const pxToViewport = (options = defaultOptions): Plugin => {const opt = Object.assign({}, defaultOptions, options);return {postcssPlugin: "postcss-px-to-viewport",//css节点都会经过这个钩子Declaration(node) {const value = node.value;// 这么做可解决复合属性问题、例如 border: 1px solid #ccc;const pxRegex = new RegExp(`(\\d*\\.?\\d+)${opt.unitToConvert}`, "g");node.value = value.replace(pxRegex, (_, p1) => {const num = parseFloat(p1);const transformValue =((num / opt.viewPortWidth) * 100).toFixed(3) + "vw";return transformValue;});},};
};
// 在来到vite.config.tscss: {preprocessorOptions: {scss: {api: 'modern-compiler',additionalData: '@use  "@/styles/global.scss" as *;'}},postcss: {plugins: [pxToViewport({viewPortWidth: 1920,unitToConvert: "px",}),]}}

上述的操作会为postcss 新增一个插件、不过这样会导致Tailwind和autoprefixer等插件失效

import Tailwind from 'tailwindcss'
import autoprefixer from 'autoprefixer'postcss: {plugins: [Tailwind,    // 这里不能 require("tailwindcss")autoprefixer, // 这里不能 require("autoprefixer")pxToViewport({viewPortWidth: 1920,})]}

上述不能的原因是因为require是common.js的语法、现在是esmModlue
经过这些 你既 使用自定义的变量 Tailwind提供的便利class 还有自己控制pxToViewport的插件(你可以自己处理css)

额外配置

import Tailwind from 'tailwindcss'
import autoprefixer from 'autoprefixer'postcss: {plugins: [Tailwind(),   // 除了变量以外 还可是函数、这样就可以额外进行配置   autoprefixer(),  // 同理pxToViewport({viewPortWidth: 1920,unitToConvert: "px",})]}

http://www.mrgr.cn/news/79045.html

相关文章:

  • 如何进行千万级别数据跑批优化
  • Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
  • 初学STM32 --- USMART
  • Transformer:如何颠覆深度学习格局并引领AI的未来
  • Spring线程池优雅关闭
  • android.enableJetifier=true的作用:V4包的类自动编程成了androidx包的类,实现androidx的向下兼容
  • 汽车IVI中控OS Linux driver开发实操(二十七):常用Linux指令
  • 记录vite关于tailwindcss4.0-bate4出现margin[m-*]、padding[p-*]无法生效的问题。
  • 神经网络中的优化方法(一)
  • Android 应用单元测试涉及 Telephony 环境初始化问题
  • 浏览器的事件循环机制
  • 深入解析 Dubbo 中的常见问题及优化方案: 数据量限制与配置错误20241203
  • 嵌入式系统应用-LVGL的应用-平衡球游戏 part1
  • 三维地形图计算软件(四)-用PYQT5+vtk画任意多面体示例
  • 澎峰科技助力中国移动 重磅发布智算“芯合”算力原生基础软件栈2.0
  • 网络安全-夜神模拟器如何通过虚拟机的Burp Suite代理应用程序接口
  • 3GPP R18 LTM(L1/L2 Triggered Mobility)是什么鬼?(三) RACH-less LTM cell switch
  • PROTEUS资源导引
  • flask的第一个应用
  • 浏览器渲染原理
  • 异常知识及其使用
  • 级联树结构TreeSelect和上级反查
  • mybatis-xml映射文件及mybatis动态sql
  • 嵌入式蓝桥杯学习1 点亮LED
  • 003-SpringBoot整合Pagehelper
  • C++学习笔记