webpack配置之---output.chunkFilename

devtools/2025/2/12 16:24:32/

output.chunkFilename

output.chunkFilename 是 Webpack 中用来配置 异步代码块(动态导入、懒加载等)文件名的选项。它控制的是通过代码拆分生成的那些非入口点(entry)文件的命名规则。

在 Webpack 构建过程中,除了打包主入口文件(entry 配置的文件),当你使用懒加载(import())或动态导入时,Webpack 会将这些异步加载的代码拆分成独立的文件。这些文件的命名就是由 output.chunkFilename 来控制的。

1. 基本用法

output: {filename: 'main.js',        // 主文件chunkFilename: 'chunks/[name].[contenthash].js' // 异步文件
}

2. 配置说明

  • chunkFilename: 用来指定异步加载的代码块的文件名。
    • 通过 chunkFilename 配置,你可以设置代码分块的文件命名规则。
    • 文件名可以包含占位符,像是 [name][id][contenthash] 等。

3. 常见占位符

chunkFilename 支持以下占位符,用来生成不同的文件名格式:

  • [name]: 代码块的名称,通常是根据入口或代码拆分的名称来生成。
  • [id]: 代码块的唯一 ID(数字)。
  • [contenthash]: 基于内容生成的哈希值,通常用于缓存优化。
  • [chunkhash]: 基于代码块内容生成的哈希值,用于缓存优化。

4. 示例配置

示例 1:基本命名
output: {filename: 'main.js',chunkFilename: 'async/[name].js'  // 异步代码块放入 async 文件夹中,使用名称作为文件名
}
示例 2:使用 contenthash 生成哈希值
output: {filename: 'main.js',chunkFilename: 'async/[name].[contenthash].js' // 文件名中包含内容哈希,适用于缓存优化
}
示例 3:使用 chunkhash
output: {filename: 'main.js',chunkFilename: 'async/[name].[chunkhash].js'  // 每个异步文件根据其内容生成哈希值
}

5. 占位符详细说明

  • [name]: 如果是通过动态 import() 创建的代码块,[name] 会使用你指定的名称。如果没有明确命名,Webpack 会根据模块文件名生成。
  • [id]: Webpack 会为每个生成的代码块分配一个数字 ID。这个占位符可以用来确保文件名唯一。
  • [contenthash]: 在每次构建时,Webpack 会计算文件内容的哈希值,并将它作为文件名的一部分。这样可以帮助浏览器缓存资源,并在内容变更时生成新的文件名。
  • [chunkhash]: 与 [contenthash] 类似,[chunkhash] 是根据整个代码块内容生成的哈希值,通常用于优化缓存和版本控制。

6. 文件输出结果

假设你使用如下配置:

output: {filename: 'js/[name].bundle.js',chunkFilename: 'js/chunks/[name].[contenthash].js'
}

Webpack 会根据你的入口和动态导入创建如下文件结构:

  • main.bundle.js:主入口文件。
  • js/chunks/asyncChunk.1234567890abcdef.js:异步代码块,文件名包含根据内容生成的哈希值。

7. 总结

  • output.chunkFilename 控制异步代码块的文件名。
  • 可以通过占位符定制命名规则,如 [name][id][contenthash][chunkhash] 等。
  • 推荐使用 [contenthash] 或 [chunkhash] 来实现缓存优化,使得文件在内容不变时不会被重新加载。


http://www.ppmy.cn/devtools/158254.html

相关文章

物联网领域的MQTT协议,优势和应用场景

MQTT(Message Queuing Telemetry Transport)作为轻量级发布/订阅协议,凭借其低带宽消耗、低功耗与高扩展性,已成为物联网通信的事实标准。其核心优势包括:基于TCP/IP的异步通信机制、支持QoS(服务质量&…

ubuntu 22.04 安装 cuda sdk 11.8

ubuntu 22.04 安装 cuda sdk 11.8 linux kernel 版本太高的问题 主要思路是先安装 nv 显卡驱动,这会同时安装 kmd driver 然后安装 cuda sdk 11.x 时不安装 kernel driver 下载 display driver 搜索 display driver https://www.nvidia.com/en-us/drivers/ 选择比…

Centos10 Stream 基础配置

NetworkManger 安装 dnf install NetworkManager 查看网络配置 nmcli [rootCentos-S-10 /]# nmcli ens33:已连接 到 ens33"Intel 82545EM"ethernet (e1000), 00:0C:29:08:3E:71, 硬件, mtu 1500ip4 默认inet4 192.168.31.70/24route4 default …

【开源项目】数字孪生武汉~超经典智慧城市CIM/BIM数字孪生可视化项目——开源工程及源码

飞渡科技数字孪生武汉CIM管理平台,基于自研数字孪生引擎,结合数字孪生、物联网IOT、云计算等信息技术,以城市数据资源融合共享为主线,打造感知、联结、计算、运用“四位一体”的城市大脑,赋能经济社会高质量可持续发展…

如何设置Java爬虫的异常处理?

在Java爬虫开发中,异常处理是确保爬虫稳定运行的关键环节。爬虫在执行过程中可能会遇到各种问题,如网络异常、目标网站的反爬机制、数据解析错误等。合理设置异常处理机制可以有效避免程序崩溃,并帮助开发者快速定位问题。以下是设置Java爬虫…

Oracle DBA 诊断及统计工具-1

ORACLE 查看表空间使用情况 1. 基本的表空间使用情况查询 可以通过组合查询 DBA_DATA_FILES 和 DBA_FREE_SPACE 视图来获取表空间的总大小、已使用空间和空闲空间等信息。不过要执行此查询,你需要具有 DBA 权限。 SELECT df.tablespace_name,-- 表空间总大小(MB)ROUND(SU…

【含文档+PPT+源码】基于python爬虫的豆瓣电影、音乐、图书数据分析系统

项目介绍 本课程演示的是一款基于python爬虫的豆瓣电影、音乐、图书数据分析系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Python学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行…

1.推荐算法基本概念

推荐算法是一个非常重要且广泛应用的领域,特别是在电子商务、社交媒体、内容推荐等领域。第一课我们将介绍推荐算法的基本概念和分类,并简单讲解两种常见的推荐算法:协同过滤和基于内容的推荐。 推荐算法的基本概念 推荐系统的目标是根据用…