1. 场景
今天想要给vite项目,添加全局的scss
变量文件引用,这样我们在使用scss变量和函数的时候就不需要每个组件都取引用了
2. 官方代码
export default defineConfig({
css: {
preprocessorOptions: {
scss: {
additionalData: `$injectedColor: orange;`
}
}
}
})
3. 问题
在如上面代码所示进行配置的时候,在vite进行构建的时候,报了个错误,提示我element-plus
的scss
文件中的@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
公共文件