当前位置:首页 > 技术文章 > 正文内容

探寻webpack打包vue项目特别慢问题

arlanguage1个月前 (03-30)技术文章28

前端 vue2 项目中,多人开发,从一段时间开始发现打包变得特别慢,每次线上更新也至少要10几20分钟,正常项目线上更新一般也就1、2分钟,新需求开发拉新分支本地运行也要至少5、6分钟才能运行的起来。

查找问题

为了找出打包慢的原因,我们首先得找到到底是哪些文件太大还是耗时太久?这中间用到了两个插件:

  • webpack-bundle-analyzer:分析打包过后的包的大小
  • speed-measure-webpack-plugin:分析各个插件和loader打包用时

1. 安装 webpack-bundle-analyzer

# NPM
npm install --save-dev webpack-bundle-analyzer

# Yarn
yarn add -D webpack-bundle-analyzer

2. 安装
speed-measure-webpack-plugin

# NPM
npm install --save-dev speed-measure-webpack-plugin

# Yarn
yarn add -D speed-measure-webpack-plugin

3. 配置 webpack 这两个插件

// vue.config.js
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
const SpeedMeasurePlugin = require('speed-measure-webpack-plugin')

module.exports = {
  configureWebpack: config => {
    config.plugins.push(new BundleAnalyzerPlugin())
    config.plugins.push(new SpeedMeasurePlugin())
  }
}

插件分析结果

  • 打包总时间:5分30.61秒
  • 打包文件总大小:24.03 MB
  • 打包时间比较长的插件和loader:@vue/vue-loader-v15、mini-css-extract-plugin、css-loader、postcss-loader、stylus-loader、cache-loader
  • 打包最大的单个文件:依赖了 echarts 的页面,大小为3.79MB,还有 xlsx 和 html2canvas 也比较大

猜测大饱满可能是 echarts 造成的,项目里是直接全部导入的 echarts 库,其实项目中只用到了一个折线图,先改成按需导入

按需导入 echarts 打包分析结果

echarts 官方文档

按需引入封装的 echarts.js,项目中只用到了一个折线图,所以只需引入 LineChart:

// 引入 echarts 核心模块 和 Canvas 渲染器
import * as echarts from 'echarts/core'
import { CanvasRenderer } from 'echarts/renderers'

// 引入折线图图表
import { LineChart } from 'echarts/charts'

// 引入图表里用到的组件
import {
  LegendComponent,
  GridComponent,
} from 'echarts/components'

// 注册必须的组件
echarts.use([
  LegendComponent,
  GridComponent,
  CanvasRenderer,
  LineChart
])

export default echarts
<script>
  import echarts from './echarts.js'
  let LineChart = null // 图表实例

  export default {
    methods: {
      chartInit() {
        if (!LineChart) LineChart = echarts.init(this.$refs.canvas)

        // 设置参数
        LineChart.setOption({
          // ...
        }
      }
    }
  }
</script>
  • 打包总时间:5分52.31秒
  • 打包文件总大小:22.07 MB
  • 打包后的 echarts 的只有1点多MB

打包的文件大小确实有变小,但是打包时间缺变得更长了。

注意上面的分析都是基于 npm run dev 打的开发包。这一下下的,给我搞得都不废了,最终打包慢的问题还在寻找中...

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/3704.html

标签: html2canvas
分享给朋友:

“探寻webpack打包vue项目特别慢问题” 的相关文章

nginx配置静态资源服务器 nginx配置静态资源服务器的方法

nginx服务器搭建在这就不过多的说明了,本内容主要是nginx静态资源服务器配置相关说明nginx配置location / :指所有的url请求都会去访问static下面的文件;指定url后缀要与文件目录后面的后缀一一对应有两种用法:root:绝对路径;alias: nginx安装目录中的stat...

基于 consul + nginx 的Spring boot微服务集群部署

consul + nginx 负载均衡最近做的基于consul的微服务项目,仅仅在单机上部署了一套,压测的时候扛不住(并发太高的时候linux文件连接数超过上限),于是想办法搞个集群部署。最终在我们的服务器的三台机器(mirage05-mirage07)上完成部署。一. 背景介绍以及项目现状1. c...

Linux日志处理神器-Logrotate

Logrotate简介Logrotate是Linux中日志分割、压缩、清理的工具,一般CentOS默认都会安装该工具。logrotate运行原理logrotate依赖于anacron执行每小时、每天、每周或每月的定时任务,corn每个小时会扫描当前机器中定时任务执行状态。 logrotate运行依...

非常想学黑客技术,但是却又不知道如何入门?看这里就够了

黑客攻防是一个极具魅力的技术领域,但成为一名黑客毫无疑问也并不容易。你必须拥有对新技术的好奇心和积极的学习态度,具备很深的计算机系统、编程语言和操作系统知识,并乐意不断地去学习和进步。如果你想成为一名优秀的黑客,下面是12种最重要的基础条件,请认真阅读:第一点:了解黑客的思维方式我们生活中用到的网站...

Java学习路线总结

本文整理了java开发的学习路线和相关的学习资源,非常适合零基础入门java的同学,希望大家在学习的时候,能够节省时间。良心推荐!第一阶段:Java基础重点知识点:数据类型、核心语法、面向对象、数组、集合、IO流、String/StringBuffer/StringBuilder、线程、并发、反射、...

SpringBoot+Vue3+Element Plus 打造分布式存储系统(完结)

获课:itazs.fun/2199/Spring Boot + Vue 3 + Element Plus 打造分布式存储系统分布式存储系统在现代企业级应用中扮演着重要角色,尤其是在处理大规模数据和高并发访问的场景下。本文将详细介绍如何使用 Spring Boot、Vue 3 和 Element Pl...