zoukankan      html  css  js  c++  java
  • @vue-cli3配合element和scss打包的配置

    @vue-cli3配合element和scss打包的配置

    标签(空格分隔): Vue


    使用@vue-cli3初始化项目,且使用ElementUI,然后按照官方文档自定义主题。

    自己的scss全局变量文件,比如叫var.scss,为了风格一致,会引用一些element-variables.scss的样式。

    此时所有页面的样式都需要引用_var.scss,但是为了方便,我们在vue.config.js中统一配置从而不必每个页面都写一遍@import:

    module.exports = {
        ...
        css: {
            loaderOptions: {
                sass: {
                    data: `
                        @import "@/_var.scss";
                    `
                }
            }
        }
    };
    

    注意@表示src目录。


    问题来了,如果你的_var.scss直接引用了element-variables.scss

    _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.scss

    /* 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文件异常大:

    打包样式文件1

    问题就在element-variables.scss最后一行:@import "~element-ui/packages/theme-chalk/src/index";,它引用了element的所有样式,这样导致所有样式在每个包都重新打包了一遍;发现问题原因就好说了。

    我们只需要把这个文件拆开,自定义主题的变量一个文件,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';
    

    这样打包后文件体积就正常了,如图所示。

    打包样式文件2

  • 相关阅读:
    [TC_SRM_466]DrawingBlackCrosses
    [POJ3254]Corn Fields
    [openjudge6043]哆啦A梦的时光机
    网络流 24 题汇总(LOJ 上只有 22 题???)
    Xadmin组件的url设计
    《今日简史》一、旧故事已然崩坏,新故事尚未构建
    《人类简史》二、认知革命——上帝之手的秘密
    ORM复习
    无拘无束的爱情
    使用代理导致IE host被修改问题的解决方案
  • 原文地址:https://www.cnblogs.com/jehorn/p/10404830.html
Copyright © 2011-2022 走看看