标签(空格分隔): Vuecss
使用@vue-cli3初始化项目,且使用ElementUI,而后按照官方文档自定义主题。vue
本身的scss全局变量文件,好比叫var.scss
,为了风格一致,会引用一些element-variables.scss
的样式。vue-cli
此时全部页面的样式都须要引用_var.scss
,可是为了方便,咱们在vue.config.js
中统一配置从而没必要每一个页面都写一遍@import:npm
module.exports = { ... css: { loaderOptions: { sass: { data: ` @import "@/_var.scss"; ` } } } };
注意@
表示src
目录。element-ui
问题来了,若是你的_var.scss
直接引用了element-variables.scss
:sass
_var.scss字体
@import "element-custom-variables"; // // Variables // 1. Colors, 2. Z-index, 3. Container size, 4. Grid, 5. Typography, 6. Components // @version 1.0.0 // @author Jehorn(jehornguu@outlook.com) // -------------------------------------------------- //#region 1. Colors // //## Global colors //** usual-gray $ve-color-black: #000 !default; $ve-color-white: #fff !default; ...
element-variables.scssui
/* Colors -------------------------- */ $--color-primary: #409EFF !default; ... /* 改变 icon 字体路径变量,必需 */ $--font-path: '~element-ui/lib/theme-chalk/fonts'; @import "~element-ui/packages/theme-chalk/src/index";
这时你会发现打包(npm serve/build)都会特别慢,并且build后的css文件异常大:spa
问题就在element-variables.scss
最后一行:@import "~element-ui/packages/theme-chalk/src/index";
,它引用了element的全部样式,这样致使全部样式在每一个包都从新打包了一遍;发现问题缘由就好说了。code
咱们只须要把这个文件拆开,自定义主题的变量一个文件,element样式的import一个文件。前者在本身的全局变量文件_var.scss
引用,后者在mian.js
直接import便可:
element-variables.scss
/* Colors -------------------------- */ $--color-primary: #409EFF !default; ...
element-custom.scss
@import "element-variables"; /* 改变 icon 字体路径变量,必需 */ $--font-path: '~element-ui/lib/theme-chalk/fonts'; @import "~element-ui/packages/theme-chalk/src/index";
_var.scss
@import "element-variables"; ...
main.js
... import './styles/element-custom.scss';
这样打包后文件体积就正常了,如图所示。