Vite当中的scss配置踩坑

1. 场景

今天想要给vite项目,添加全局的scss变量文件引用,这样我们在使用scss变量和函数的时候就不需要每个组件都取引用了

2. 官方代码

export default defineConfig({
  css: {
    preprocessorOptions: {
      scss: {
        additionalData: `$injectedColor: orange;`
      }
    }
  }
})

3. 问题

在如上面代码所示进行配置的时候,在vite进行构建的时候,报了个错误,提示我element-plusscss文件中的@use语法放在所有引用的前面,

// vite.config.ts
scss: {
     additionalData: `@import "@/style/share.scss";`
}

上面是我的配置

4. 原因

后来发现在main.ts中,引用了element-plus的scss样式,element-plus/theme-chunk/src/base.scss,(因为按需引入,所以采用这种方式进行导入)

由于我们配置在vite.config.ts中的scss选项应该是会先于我们main.ts进行加载的,所以就报了上面的错误,

5. 解决

我将element-plus的样式采用官方全局引入的形式,放在了main.ts当中,这样就解决了报错问题,也能够正常使用share.scss中的变量和函数,当然我们导入了全部组件的样式,包的体积就变大了,所以两者我们可以视项目的实际情况,看是需要按需加载还是需要节省导入文件的scss公共文件

上一篇:vue项目引入外部less、scss


下一篇:transformer代码笔记----transformer.py