【工程化】前端打包时间优化

背景

在打包编译时发现built时间长达57s,并且提示超过500kb,说明需要优化了!

优化

插件推荐: Rollup Plugin Visualizer
项目引入:

javascript 复制代码
import { visualizer } from 'rollup-plugin-visualizer'

export default defineConfig(() => {

    return {
        build: {
            sourcemap: true
        },
        plugins: [
            vue(),
            visualizer({
                open: true, // 构建完成后会自动打开浏览器,显示可视化报告。
                filename: 'stats.html', // 生成的报告文件名称
                gzipSize: true, // 显示各文件在经过 gzip 压缩后的大小
                brotliSize: true // 显示各文件在经过 brotli 压缩后的大小
            }),
       ]
   }
}

页面展示

可以看到占主要大头的是最右侧两块,可以去除全局引用+build.rollupOptions.output.manualChunks手动分包

初步优化一波,把最大的vxxxx部分和ant-design-vue拆出来

javascript 复制代码
export default defineConfig(({ mode }) => {

    return {
        build: {
            sourcemap: true,
            rollupOptions: {
                output: {
                    manualChunks(id) {
                        if (id.includes('@visactor')) {
                            if (id.includes('vchart'))
                                return 'vendor-visactor-chart'
                            if (id.includes('vtable'))
                                return 'vendor-visactor-table'
                            if (id.includes('vlayout'))
                                return 'vendor-visactor-layout'
                            return 'vendor-visactor-other'
                        }
                        if (id.includes('ant-design-vue')) {
                            // 将大型组件单独分包
                            if (id.includes('/table/')) return 'antd-table'
                            if (id.includes('/form/')) return 'antd-form'
                            if (id.includes('/date-picker/')) return 'antd-date'
                            if (id.includes('/select/')) return 'antd-select'
                            if (id.includes('/modal/')) return 'antd-modal'
                            // 样式和工具单独分包
                            if (id.includes('/style/')) return 'antd-style'
                            if (id.includes('/_util/')) return 'antd-util'
                            return 'antd-other'
                        }
                    }
                }
            }
        },
        plugins: [.....]

就有一些效果了(15%左右),再继续细化即可~

相关推荐
李剑一3 分钟前
华为新上Pura X View阔直板手机,特殊屏幕比例设备下,前端应该怎么去适配更完美?送你一套完整工具代码
前端
01_ice13 分钟前
html个人简历展示
前端·html
程序员爱钓鱼19 分钟前
Rust where详解:让泛型与Trait约束更加清晰
前端·后端·rust
zzzzzz3101 小时前
react-bits 为什么会吸引前端开发者:别把动效当装饰,先把它当成页面能力
前端·react.js·动效
风月说与山鬼3 小时前
二、React入口文件(main.jsx)
前端·react.js
东风破_8 小时前
Docker 基础:为什么需要容器?
前端·后端·nginx
东风破_8 小时前
Docker 实战:使用 Nginx 作为容器入口代理 Node 服务
前端·后端·nginx
你别说话了9 小时前
Vue项目解决跨域
前端·javascript·vue.js
唐青枫10 小时前
http-server:别再双击 index.html,一条命令把目录变成网站
前端·javascript
网安蟹佬霸10 小时前
OSINT开源情报收集实战:从信息搜集到资产测绘(2026最新万字保姆级指南)
前端·网络·安全·web安全·网络安全·开源