vite项目 postcss-px-to-viewport适配vant

关于vite项目postcss-px-to-viewport适配vant的问题,网上很多文章都已经过时或者都是基于webpack的配置,很少vite相关的配置教程,故做一下笔记希望帮到正在踩坑的同学。

postcss-px-to-viewport插件已经抛弃使用请使用postcss-px-to-viewport-8-plugin

(项目运行时会提示已弃用)

已经安装postcss-px-to-viewport先删除 npm uninstall postcss-px-to-viewpor

删除项目postcss.config.js

重点是postcss里面的配置,其他配置项可以忽略

javascript 复制代码
1.按照依赖
npm install postcss-px-to-viewport-8-plugin -D

2.vite.config.js配置如下

import postcsspxtoviewport8plugin from 'postcss-px-to-viewport-8-plugin';

export default defineConfig({
  plugins: [
    vue(),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  server:{
    host: '0.0.0.0',
  },
  css: {
    // css预处理器
    preprocessorOptions: {
      scss: {
        // 给导入的路径最后加上 ;
        additionalData: '@import "@/style/pxToVw.scss";'
      }
    },
    postcss: {
      plugins: [
        postcsspxtoviewport8plugin({
          unitToConvert: 'px',
          viewportWidth: file => {
            let num = 750;
            //van是375
            if (file.indexOf('van')>0) {
              num = 375;
            }
            return num;
          },
          unitPrecision: 5, // 单位转换后保留的精度
          propList: ['*'], // 能转化为vw的属性列表
          viewportUnit: 'vw', // 希望使用的视口单位
          fontViewportUnit: 'vw', // 字体使用的视口单位
          selectorBlackList: ['ignore-'], // 需要忽略的CSS选择器,不会转为视口单位,使用原有的px等单位。
          minPixelValue: 1, // 设置最小的转换数值,如果为1的话,只有大于1的值会被转换
          mediaQuery: true, // 媒体查询里的单位是否需要转换单位
          replace: true, //  是否直接更换属性值,而不添加备用属性
          exclude: [], // 忽略某些文件夹下的文件或特定文件,例如 'node_modules' 下的文件
          include: [], // 如果设置了include,那将只有匹配到的文件才会被转换
          landscape: false, // 是否添加根据 landscapeWidth 生成的媒体查询条件 @media (orientation: landscape)
          landscapeUnit: 'vw', // 横屏时使用的单位
          landscapeWidth: 1628, // 横屏时使用的视口宽度
        }),
      ],
    },
  }
})
相关推荐
nice先生的狂想曲2 小时前
javascript高级程序设计(六)——2026.9.5
前端·javascript
光影少年2 小时前
如何做大型React+RN 项目架构设计、目录规范
前端·react native·react.js
一位正在转型AI全栈的前端工程师2 小时前
AI 全栈学习之旅 -Week 8:从单 Agent 到多 Agent 协作:LangGraph 实战与记忆持久化
前端·python
用户921080262862 小时前
Promise 和 async/await:从用途到执行机制
前端
yyt3630458412 小时前
KLineChartQuant:GLSL 的精度问题及 RTC 解法
前端·vue.js·react.js·交互·图形渲染·webgl·数据可视化
HarmonLTS3 小时前
智盾 WAF v8.2 Ultra|下一代 Web 应用防火墙
前端
এ慕ོ冬℘゜3 小时前
前端实战:基于jQuery递归实现通用树形组织菜单(可直接复用)
前端·javascript·jquery
计算机魔术师3 小时前
英伟达据报洽谈向 Mira Murati 的 Thinking Machines Lab 投资 25 亿美元
前端
变与不变8063 小时前
js函数与封装详细解答
前端·javascript·vue.js
南雨北斗3 小时前
Vue 3 项目中的拦截器的作用和写法(动态设置响应头适配表单文件上传)
前端