vite里postcss里@csstools/postcss-global-data的用法 (importFrom失效后的解决办法

Postcss-custom-properties 默认只能识别:root{} 和:html{}的变量

确保你的css变量符合规定 不然不会生效

js 复制代码
```postcss: {
            plugins: [
                postcssGlobalData({
                    files: [
                        path.resolve(process.cwd(), "从你vite.config.js到css的相对路径")
                    ]
                }),
                postcssPresetEnv()
            ]

        }
        //这个path和process都是node的 所以还要引入 const path = require("path")
        //这里vite里的postcss对象和postcss.config.js里默认导出的那个对象是一样的

gloabalData需要放到custom_properties前面 代码里的postcssPresetEnv是一堆插件的集合(pluginPackage)其中就包含了custom_properties,按需替换

css3的变量不能用于less因为postcss在生命周期上要比less靠后(less先处理postcss后处理 但是其他的css文件都是能正常用的

目前vite模块化css要实现变量和代码解耦只有两种方式

1.全用less然后在preprocessorOptions: {less: {globalVars: 里去写全局变量 或者你单独写个less文件然后在其他文件里用@import url(./xxx.less)引入 globalvars可以和dotEnv联用

2.用css自带的变量写法 :root{ --aaa-bb:变量} 使用var(--aaa-bb)来引用配合global-data和custom-properties来实现\

虽然用less定义css3的变量 在普通的模块化css里也能引入也能正常生效 但是由于按需引入等问题

模块化less在vite里老是不生效 不知道是不是我环境的问题 还是他不支持.module.less的写法

注意:CSS Modules 设计初衷就是配合 JavaScript 使用,无法像传统 CSS 那样直接在 HTML 中通过 class 属性使用原始类名。这是 CSS Modules 实现样式作用域隔离的机制决定的。所以.module.css需要在main.js(入口文件)中引入他才会打包

相关推荐
战南诚3 小时前
VUE中,keep-alive组件与钩子函数的生命周期
前端·vue.js
霍理迪4 小时前
Vue的响应式和生命周期
前端·javascript·vue.js
SuperEugene9 小时前
Vue3 模板语法规范实战:v-if/v-for 不混用 + 表达式精简,避坑指南|Vue 组件与模板规范篇
开发语言·前端·javascript·vue.js·前端框架
Luna-player9 小时前
Vue 3 + Vue Router 的路由配置,简单示例
前端·javascript·vue.js
angerdream9 小时前
最新版vue3+TypeScript开发入门到实战教程之Vue3详解props
javascript·vue.js
~欲买桂花同载酒~10 小时前
项目优化-vite打包优化
前端·javascript·vue.js
踩着两条虫11 小时前
AI 驱动的 Vue3 应用开发平台 深入探究(二十):CLI与工具链之构建配置与Vite集成
前端·vue.js·ai编程
踩着两条虫11 小时前
AI 驱动的 Vue3 应用开发平台 深入探究(二十):CLI与工具链之自定义构建插件
前端·vue.js·ai编程
极梦网络无忧13 小时前
基于 Vite + Vue3 的组件自动注册功能
前端·javascript·vue.js
雪碧聊技术14 小时前
前端vue代码架子搭建
前端·javascript·vue.js·前端项目代码框架搭建