包文件分析器 Webpack Bundle Analyzer

webpack-bundle-analyzer 是一个非常有用的工具,用于可视化和分析 Webpack 打包生成的文件。这使得开发者能够更好地理解应用的依赖关系、包的大小,以及优化打包的机会。以下是关于 webpack-bundle-analyzer 的详细介绍,包括它的安装、使用以及如何解读生成的报告。文档。

安装

你可以通过 npm 或 yarn 安装 webpack-bundle-analyzer

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

或者使用 yarn:

yarn add --dev webpack-bundle-analyzer

配置

webpack-bundle-analyzer 可以通过多种方式使用,以下是常见的几种:

1. 在 Webpack 配置中使用

在你的 Webpack 配置文件中引入 webpack-bundle-analyzer 插件,并将其添加到 plugins 数组中。

const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');

module.exports = {
    // 其他配置...
    plugins: [
        new BundleAnalyzerPlugin({
            // 这里可以设置一些选项
            analyzerMode: 'static', 
            analyzerPort: 8888,
            reportFilename: 'report.html', // 打包后的报告文件名
            openAnalyzer: true, // 自动打开报告
            generateStatsFile: true, // 生成 stats.json 文件
            statsFilename: 'stats.json', // stats 文件名称
        }),
        // 其他插件...
    ],
};

运行Webpack并生成分析报告:

npx webpack --mode production

 这将在dist目录下生成一个report.html文件,打开这个文件,你将看到一个交互式的图表,显示了你的包的大小分布。

在上述配置中,analyzerMode 可以选择 serverstaticdisabled

  • server:在本地服务器上启动一个分析器,默认在 http://localhost:8888
  • static:生成一个静态的 HTML 文件,默认文件名为 report.html
  • disabled:禁用分析器。

2. 通过命令行使用

你可以在命令行中使用 webpack-bundle-analyzer,通过运行以下命令来生成报告:

npx webpack-bundle-analyzer <path-to-your-stats-file>

 首先,你需要生成 Webpack 的 stats 文件。可以通过在 Webpack 配置中添加 --json 选项来生成:

webpack --json > stats.json

然后运行分析器:

npx webpack-bundle-analyzer stats.json

3. 在 Vue CLI 项目中使用

如果你在使用 Vue CLI 创建的项目,你可以在 vue.config.js 中配置 webpack-bundle-analyzer

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

module.exports = {
    configureWebpack: {
        plugins: [
            // 配置包分析器
            new BundleAnalyzerPlugin({
                analyzerMode: 'static',
                // analyzerMode: 'server',
                // analyzerMode: 'disabled',
                // analyzerHost: '127.0.0.1',
                // analyzerPort: 8888,
                reportFilename: 'report.html',
                defaultSizes: 'gzip',
                generateStatsFile: true, // 如果为true,则Webpack Stats JSON文件将在bundle输出目录中生成
                openAnalyzer: false, // 默认在浏览器中自动打开报告
                statsFilename: 'stats.json', // 如果generateStatsFile为true,将会生成Webpack Stats JSON文件的名字
                statsOptions: { source: false }
            })
        ]
    }
}

 在 package.json 中,找到 scripts,添加

"analyz": "cross-env NODE_ENV=production vue-cli-service build --mode production",
或
"analyz": "cross-env NODE_ENV=production npm run build",

 然后构建打包,完成后,我们发现在 dist 文件夹里生成了一个 report.html 文件与stats.json 文件

npm run analyz 

这种方式会生成 stats.json 文件(很大,部署时需要移除),除此之外,还能看到每一个文件的 Stat size、Parsed size、Gzipped size三种格式的文件大小

webpack-bundle-analyzer的主要配置项及其作用:

  1. analyzerMode:

    • 类型string
    • 默认值'server'
    • 说明: 指定分析模式。可选值:
      • 'server': 在服务器上启动 HTTP 服务并打开浏览器窗口显示报告(默认)。
      • 'static': 生成一个包含报告的单个 HTML 文件。
      • 'json': 生成 JSON 格式的报告文件。
      • 'disabled': 不生成任何报告或开启服务器。
  2. reportFilename:

    • 类型string
    • 默认值'report.html'
    • 说明: 当 analyzerMode 为 'static' 时,这个选项决定了生成的 HTML 报告文件的名称与路径。
  3. openAnalyzer:

    • 类型boolean
    • 默认值true
    • 说明: 是否在构建完成后自动打开报告页面。
  4. generateStatsFile:

    • 类型boolean
    • 默认值false
    • 说明:是否在生成报告的同时也生成一个 stats.json 文件,该文件包含了打包过程中的详细信息。
  5. statsFilename:

    • 类型string
    • 默认值'stats.json'
    • 说明: : 当 generateStatsFile 设置为 true 时,这个选项用于指定生成的 stats 文件的名称。
  6. statsOptions:

    • 类型object
    • 默认值null
    • 说明: 用于配置生成 stats 文件的选项。可以传入 Webpack 的 Stats 选项,以便定制化包含的信息。
  7. openAnalyzer:

    • 类型boolean
    • 默认值true
    • 说明: 是否在完成构建后自动打开分析报告。
  8. excludeAssets:

    • 类型array
    • 默认值[]
    • 说明: 允许通过正则表达式或函数来排除特定资源不被包含到报告中。
  9. analyzerHostanalyzerPort:

    • 类型number
    • 默认值8888
    • 说明: 分别指定运行本地 HTTP 服务器的主机名和端口。当你选择 'server' 模式时,这些配置将决定你通过哪个地址访问分析报告。
  10. defaultSizes:

    • 类型string
    • 默认值'parsed'
    • 说明: 报告中默认显示的大小类型。可选值:
      • 'stat': 包含原始大小。
      • 'parsed': 包含解析后的大小(即去除了压缩后的大小)。
      • 'gzipped': 包含 Gzip 后的大小。
      • :brotli 压缩后的大小

查看报告

如果你选择了 static 模式,报告将生成在指定的文件中(如 bundle-report.html)。打开文件时,你会看到如下内容:

  • 包大小:每个模块的大小,以及整个应用的总大小。
  • 依赖树:显示各个模块之间的依赖关系,可以展开和收缩查看。
  • 颜色编码:模块的颜色通常表明其大小,帮助你快速识别大包。

解读报告

在分析报告中,你可以找到以下信息:

  1. 模块大小:可以查看各个模块的实际大小,识别出哪些包过大,需要优化。
  2. 依赖关系:可以很直观地看到各个模块是如何相互依赖的,便于理解整个应用的结构。
  3. 第三方库:可以查看第三方库(如 React、Lodash 等)的大小,帮助你决定是否需要使用更轻量的替代库。

优化

根据分析结果,你可以采取以下措施来优化你的打包:

  1. 代码分割:使用动态导入(import())来分割较大的模块,从而按需加载。
  2. 懒加载:将不必要的模块懒加载,只有在需要时再加载它们。
  3. 移除未使用的依赖:检查并删除不再使用的依赖包。
  4. 使用轻量库:如果某些库的大小过大,考虑使用更小的替代库。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/957630.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

重学SpringBoot3-WebClient配置与使用详解

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞??收藏评论 重学SpringBoot3-WebClient配置与使用详解 1. 简介2. 环境准备 2.1 依赖配置 3. WebClient配置 3.1 基础配置3.2 高级配置3.3 retrieve()和exchange()区别 4. 使用示例 4.1 基本请求操…

持续升级《在线写python》小程序的功能,文章页增加一键复制功能,并自动去掉html标签

增加复制按钮后的界面是这样的 代码如下&#xff1a; <template><view><x-header></x-header><view class"" v-if"article_info"><view class"kuai bgf"><view class"ac fs26"><img sr…

今天也是记录小程序进展的一天(破晓时8)

嗨嗨嗨朋友们&#xff0c;今天又来记录一下小程序的进展啦&#xff01;真是太激动了&#xff0c;项目又迈出了重要的一步&#xff0c;231啦&#xff01;感觉每一步的努力都在积累&#xff0c;功能逐渐完善&#xff0c;离最终上线的目标越来越近了。大家一直支持着这个项目&…

启动虚拟机中客户机后导致电脑蓝屏的解决办法

不考虑重新安装虚拟机的解决办法有两种&#xff1a; vmx文件破损时使用 1&#xff09;删除CentOS 64-bit.vmx文件 2&#xff09;打开vmware-0.log文件&#xff0c;找到CONFIGURATION 和 USER DEFAULTS 并把这两个之间的内容拷贝出来 删除框出来的部分&#xff0c;复制框出来的…

Word2Vec中的CBOW模型训练原理详细解析

Word2Vec中的CBOW模型训练原理详细解析 1. CBOW模型概述 CBOW模型的训练目标是利用一个单词周围的上下文单词来预测该单词本身。具体来说&#xff0c;给定当前单词的上下文单词&#xff0c;通过训练神经网络来最大化当前单词出现在这些上下文单词中的概率。 2. 模型结构 CB…

Android Studio打包APK

1.导出APK安装包 如果是首次打包&#xff0c;Create new 单击蓝色对话框右边文件夹&#x1f4c2;图标 &#xff0c;选择密钥保存路径&#xff0c;然后在下方File name对话框中填写您想要名称&#xff0c;再点击OK回到密钥创建对话框。 在此对话框中填写密码&#xff08;Passwo…

MySql字段的值是以逗号隔开的另一个表的主键关联查询

查询sql SELECT s.student_id, s.name, c.name as course_name FROM student s INNER JOIN course c ON FIND_IN_SET(c.course_id, s.course_id) > 0 WHERE 1 1;相似sql -- 翻译&#xff08;需要带条件&#xff0c;可用于字典翻译&#xff0c;但条件需要注意唯一性&#…

windows git bash 使用zsh 并集成 oh my zsh

参考了 这篇文章 进行配置&#xff0c;记录了自己的踩坑过程&#xff0c;并增加了 zsh-autosuggestions 插件的集成。 主要步骤&#xff1a; 1. git bash 这个就不说了&#xff0c;自己去网上下&#xff0c;windows 使用git时候 命令行基本都有它。 主要也是用它不方便&…

QD Laser携“Lantana”激光器参展SPIE光子学西部展2025,聚焦紧凑型设计

据悉&#xff0c;QD Laser公司将在2025年SPIE光子学西部展览会上展出其最新产品——世界最小一体化紧凑型可见光激光器“Lantana”。该展会将于1月28日至30日在旧金山的Moscone中心举行。 在展会期间&#xff0c;QD Laser公司将现场展示这款超小型、轻便设备—— “Lantana”。…

Ubuntu 22.04 TLS 忘记root密码,重启修改的解决办法

1.想办法进入这个界面&#xff0c;我这里是BIOS引导的是按Esc按一下就行&#xff0c;UEFI的貌似是按Shift不得而知&#xff0c;没操作过。下移到Advanced options for Ubuntu&#xff0c;按enter 2.根据使用的内核版本&#xff0c;选择带「recovery mode」字样的内核版本&#…

Proteus-8086调试汇编格式的一点心得

这阵子开始做汇编的微机实验&#xff08;微机原理与接口技术题解及实验指导&#xff0c;吴宁版本13章&#xff09;&#xff0c;中间出了挺多问题&#xff0c;解决后记录下。 先上电路图 用子电路来仿真发现仿真的时候子电路这块根本没有高低电平输出&#xff0c;只好把子电路拿…

外部flash烧写算法学习笔记(一)

一&#xff0c;STM32CubeProgrammer STM32下载编程工具 | STM32CubeProg介绍、下载、安装和使用教程 - 知乎 1.使用速览 2.外部烧写 二&#xff0c;QSPI外部烧写算法制作 STM32H7的花式玩转SPI Flash章节也更新了&#xff0c;含MDK下载算法制作和STM32CubeProg下载算法制作 …

在centos上编译安装opensips【初级-默认安装】

环境&#xff1a;centos9 last opensips3.2 dnf update -y dnf install -y gcc make git automake libtool pcre-devel libxml2-devel \libcurl-devel postgresql-devel \bzip2-devel zlib-devel ncurses-devel libuuid-devel \libpcap-devel # 有报错的直接删除cd /usr/lo…

【Prometheus】PromQL进阶用法

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

Fabric区块链网络搭建:保姆级图文详解

目录 前言1、项目环境部署1.1 基础开发环境1.2 网络部署 2、后台环境2.1、环境配置2.2、运行springboot项目 3、PC端3.1、安装依赖3.2、修改区块链网络连接地址3.3、启动项目 前言 亲爱的家人们&#xff0c;创作很不容易&#xff0c;若对您有帮助的话&#xff0c;请点赞收藏加…

【SpringCloud】黑马微服务学习笔记

目录 1. 关于微服务 ?1.1 微服务与单体架构的区别 ?1.2 SpringCloud 技术 2. 学习前准备 ?2.1 环境搭建 ?2.2 熟悉项目 3. 正式拆分 ?3.1 拆分商品功能模块 ?3.2 拆分购物车功能模块 4. 服务调用 ?4.1 介绍 ?4.2 RustTemplate?的使用 4.3 服务治理-注册中…

RabbitMQ1-消息队列

目录 MQ的相关概念 什么是MQ 为什么要用MQ MQ的分类 MQ的选择 RabbitMQ RabbitMQ的概念 四大核心概念 RabbitMQ的核心部分 各个名词介绍 MQ的相关概念 什么是MQ MQ(message queue)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO 先入先出&am…

鸿蒙参考文档和问题记录

本文用于记录鸿蒙使用过程中的问题和相关参考文档 问题记录 1. 兼容性测试套件问题 ActsStartAbilityForResultNoTargetBundleListStageTest套件测试失败&#xff1a;模块FreeInstall 技术资料 1. HarmonyOS应用如何打包HAP并安装到真机 HarmonyOS应用如何打包HAP并安装到真…

虚幻基础-1:cpu挑选(14600kf)

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 ue非常吃cpu拉满主频打开项目编写蓝图运行原因 时间长 关于压力测试 本文以14600kf为例&#xff0c;双12购入&#xff0c;7月份产。 ue非常吃cpu 经本人测试&#xff0c;ue是非常吃cpu的。 拉满主频 无论任何时间…

css动画水球图

由于echarts水球图动画会导致ios卡顿&#xff0c;所以纯css模拟 展示效果 组件 <template><div class"water-box"><div class"water"><div class"progress" :style"{ --newProgress: newProgress % }"><…