vite处理css

CSS 预处理器

vite内置支持less、sass、stylus,无需安装特定插件,

如果使用的是单文件组件,可以通过 <style lang="sass">(或其他预处理器)自动开启。

CSS Modules

任何以 .module.css 为后缀名的 CSS 文件都被认为是一个 CSS modules 文件。导入这样的文件会返回一个相应的模块对象。

CSS后处理

安装postcss autoprefixer

然后配置postcss.config.js或在vite.config中配置

// vite.config.ts 增加如下的配置
import autoprefixer from 'autoprefixer';
export default {
  css: {
    // 进行 PostCSS 配置
    postcss: {
      plugins: [
        autoprefixer({
          // 指定目标浏览器
          overrideBrowserslist: ['Chrome > 40', 'ff > 31', 'ie 11']
        })
      ]
    }
  }
}

# 或配置postcss.config.js
const autoprefixer = require('autoprefixer')
module.exports = {
  plugins: [
    autoprefixer({
      overrideBrowserslist: [
        "last 2 versions",
        "> 1%",
        "iOS 7",
        "last 3 iOS versions"
      ]
    })
  ]
}

CSS打包

默认情况下,dev模式css代码会通过style标签插入,生产模式css代码会单独打包成一个文件。

config配置示例

export default defineConfig({
  css: {
    // 进行CSS Modules配置
    modules: {
      // 一般我们可以通过 generateScopedName 属性来对生成的类名进行自定义
      // 其中,name 表示当前文件名,local 表示类名
      generateScopedName: "[name]__[local]___[hash:base64:5]"    
    },
    // 进行 CSS预处理配置
    preprocessorOptions: {
      scss: {
        // additionalData 的内容会在每个 scss 文件的开头自动注入
        additionalData: `@import "${variablePath}";`
      }    
    },
    // 进行 PostCSS 配置
    postcss: {
      plugins: [
        autoprefixer({
          // 指定目标浏览器
          overrideBrowserslist: ['Chrome > 40', 'ff > 31', 'ie 11']
        })
      ]
    }
  },
  ......
});