背景
最近接手一个公司项目,代码是两年前的,根据我的习惯,我每次运行项目的时候都会去装水,这样的话用我装水的时间就可以把运行代码的时间消磨掉,算是时间管理大师了。结果回到座位,好家伙竟然还没跑完,算算时间已经接近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)
}
......等待中
结果出来了,5min以上,最主要问题出在loader上面,进一步分析项目,项目使用的是sass,我觉得主要问题出来sass的编译这里
发现在sass解析器里有加入additionalData选项,里面的内容其中一个引入是引入node_modules里面的样式。
解决
其实additionalData虽然能减少全局变量的引入,但是对性能的消耗也是很大的,经过深入,发现项目中引入一个私人库的sass,但是私人库已经不更新了,所以将私人库对应的一些样式直接本地化,然后通过项目局部引入变量,取消additionalData配置
再次启动编译...
成功的降低了1~2min的构建时间
一些其它啊的优化项
noParse: /(vue)/ // 减少不必要的编译,这里我只写了vue是不想写,你们可以写多点
watchOptions: { // 减少文件监听
ignored: /node_modules/
},
splitChunks: false // 在开发环境可以把切包取消