今天给公司的项目“提提速”

263 阅读2分钟

背景

最近接手一个公司项目,代码是两年前的,根据我的习惯,我每次运行项目的时候都会去装水,这样的话用我装水的时间就可以把运行代码的时间消磨掉,算是时间管理大师了。结果回到座位,好家伙竟然还没跑完,算算时间已经接近5分钟了。这种情况作为时间管理大师肯定忍不了。


分析

技术栈是vue2+vue-cli4,按道理来说,速度应该不会很慢才对,还是先用大家都知道的分析工具,分析一下到底怎么回事,speed-measure-webpack-plugin库,用于分析webpack构建时间,构建速度主要取决于硬件,loader,plugin,代码多种问题

    // 安装
    npm i speed-measure-webpack-plugin
    const SpeedMeasurePlugin = require('speed-measure-webpack-plugin')
    
    // 配置
    chaninWebpack: config => {
        config.plugin('speed').use(SpeedMeasurePlugin)
    }

......等待中

image.png

结果出来了,5min以上,最主要问题出在loader上面,进一步分析项目,项目使用的是sass,我觉得主要问题出来sass的编译这里

image.png

发现在sass解析器里有加入additionalData选项,里面的内容其中一个引入是引入node_modules里面的样式。


解决

其实additionalData虽然能减少全局变量的引入,但是对性能的消耗也是很大的,经过深入,发现项目中引入一个私人库的sass,但是私人库已经不更新了,所以将私人库对应的一些样式直接本地化,然后通过项目局部引入变量,取消additionalData配置

再次启动编译...

image.png

成功的降低了1~2min的构建时间


一些其它啊的优化项

    noParse: /(vue)/ // 减少不必要的编译,这里我只写了vue是不想写,你们可以写多点
    watchOptions: {  // 减少文件监听
        ignored: /node_modules/   
    },
    splitChunks: false // 在开发环境可以把切包取消