一、Webpack5 新特性

内置 Asset Modules(资源模块)

  • 替代 file-loader、url-loader、raw-loader 等,统一资源处理方式。
  • 四种类型:
  • asset/resource:导出文件 URL(等同 file-loader)。
  • asset/inline:导出 DataURL(等同 url-loader)。
  • asset/source:导出源码(等同 raw-loader)。
  • asset:自动选择 resource 或 inline(默认 8KB 分界)。

持久化缓存(Persistent Caching)

  • 新增 cache: { type: 'filesystem' },极大提升二次构建速度。

Tree Shaking 更彻底

  • 默认生产模式下更智能地移除无用代码。

Module Federation(模块联邦)

  • 支持多个独立构建的应用共享模块,实现微前端架构。

更快的构建性能

  • 优化了编译流程,支持多进程/多实例(如 thread-loader)。

移除 Node.js Polyfills

  • 不再自动为 Node.js 内置模块做 polyfill,需手动引入。

更智能的默认配置

  • 如 production/development 模式下的优化、缓存、分包等。

更好的资源指纹

  • 支持 chunkhashcontenthashhash,便于缓存管理。

二、详细配置

基础配置

// webpack.config.js
const path = require("path");module.exports = {mode: "production", // 或 'development'entry: {index: "./src/index.js",},output: {path: path.join(__dirname, "dist"),filename: "[name].js",},
};

资源模块(Asset Modules)

module.exports = {module: {rules: [{test: /\.(jpg|jpeg|png|gif|svg)$/i,type: "asset",generator: {filename: "images/[hash][ext][query]",},},{test: /\.(ttf|eot|woff|woff2|otf)$/i,type: "asset/resource",generator: {filename: "fonts/[hash][ext][query]",},},{test: /\.txt$/,type: "asset",generator: {filename: "files/[hash][ext][query]",},parser: {dataUrlCondition: {maxSize: 4 * 1024, // 4kb},},},],},
};

CSS/LESS/PostCSS 配置

const MiniCssExtractPlugin = require("mini-css-extract-plugin");module.exports = {module: {rules: [{test: /\.css$/,use: [MiniCssExtractPlugin.loader, "css-loader", "postcss-loader"],},{test: /\.less$/,use: [MiniCssExtractPlugin.loader,"css-loader","postcss-loader","less-loader",],},],},plugins: [new MiniCssExtractPlugin({filename: "[name]_[contenthash:8].css",}),],
};
PostCSS 配置(postcss.config.js)
module.exports = {plugins: [require("autoprefixer"),// 可选:cssnext、purgecss 等],
};

代码分割与动态 import

// 安装插件
// npm i -D @babel/plugin-syntax-dynamic-import// .babelrc
{"plugins": ["@babel/plugin-syntax-dynamic-import"]
}

动态 import 示例:

methods: {dynamicImportFn() {import('./Dynamic.vue').then(component => {this.dynamicComponent = component.default;});}
}

缓存与构建优化

module.exports = {cache: {type: "filesystem",buildDependencies: {config: [__filename],},version: "1.0",},
};

多进程/多实例

module.exports = {module: {rules: [{test: /\.js$/,use: [{loader: "thread-loader",options: { workers: 2 },},"babel-loader",],},],},
};

体积分析与速度分析

const SpeedMeasurePlugin = require("speed-measure-webpack-plugin");
const BundleAnalyzerPlugin =require("webpack-bundle-analyzer").BundleAnalyzerPlugin;const smp = new SpeedMeasurePlugin();module.exports = smp.wrap({// ...webpack 配置plugins: [new BundleAnalyzerPlugin()],
});

生产环境优化

  • JS 压缩:内置 TerserPlugin
  • CSS 压缩:css-minimizer-webpack-plugin
const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");module.exports = {optimization: {minimize: true,minimizer: [new CssMinimizerPlugin({ parallel: true })],},
};

DLL 预编译

// webpack.dll.js
const path = require("path");
const webpack = require("webpack");module.exports = {mode: "production",entry: ["vue"],output: {path: path.resolve(process.cwd(), "dll"),filename: "vendor.js",library: "dllExample",},plugins: [new webpack.DllPlugin({name: "dllExample",path: path.resolve(process.cwd(), "dll/manifest.json"),}),],
};

三、使用示例

资源引用

  • 图片、字体、文本等资源直接 import 即可,Webpack5 自动处理。

代码分割

  • 使用 import() 实现懒加载和动态组件。

性能分析

  • 运行 npm run build 后自动弹出体积分析报告。

参考资料

  • Webpack 官方文档
  • Webpack5 迁移指南

 Webpack5 新特性与详细配置指南 - 高质量源码分享平台-免费下载各类网站源码与模板及前沿技术分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/90057.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/90057.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/90057.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

笼子在寻找一只鸟:解读生活的隐形陷阱

想象一个闪闪发光的笼子,敞开着门,在世界中游荡,寻找一只鸟儿。这画面是不是有点奇怪?这是卡夫卡的格言“一个笼子在寻找一只鸟”带给我们的奇思妙想。通常,鸟儿自由翱翔,笼子静静等待,但卡夫卡…

低空经济展 | 约克科技携小型化测试设备亮相2025深圳eVTOL展

全球低空经济与eVTOL产业盛会——2025深圳eVTOL展,将于2025年9月23日至25日在深圳坪山燕子湖国际会展中心盛大启幕! 本届展会以“低空经济eVTOL航空应急救援商载大型无人运输机”为核心,预计汇聚200位发言嘉宾、500家顶尖展商及15,000位专业观…

数学专业转行做大数据容易吗?需要补什么?

高考志愿选择数学专业是一个面向未来的决定。数学作为基础学科,其严谨的逻辑训练和抽象思维能力培养,为后续专业发展提供了广泛的可能性。在数字化时代背景下,数学专业毕业生在数据科学、人工智能等领域的竞争优势明显。大学期间推荐考CDA数据…

物联网系统中-设备管理定义方法

物联网系统中的设备管理是指对联网物理设备进行全生命周期监控、配置、维护和优化的系统性过程。它涵盖了从设备接入到退役的各个环节,是物联网平台的核心能力,确保设备安全、稳定、高效地运行并产生价值。 以下是设备管理的详细定义与核心组成部分&…

java和ptyhon对比

📝 ​1. 语言特性对比​​维度​​Java​​Python​​语法风格​静态类型,需显式声明变量类型;代码冗长(需分号、大括号)动态类型,变量类型自动推断;简洁(缩进代替大括号&#xff0c…

UI测试解决方案TestComplete:助力小团队端到端测试全覆盖

面对软件多平台部署的复杂环境与有限的人力资源,小团队在追求端到端测试覆盖时常常陷入困境:既要确保应用在Windows、macOS、Linux及iOS、Android等碎片化平台上的稳定兼容,又要应对脚本重复编写耗时费力、测试效率低下的挑战,同时…

【Android】事件、绘制坐标系相关

一,事件坐标系即MotionEvent事件下发的坐标系,其坐标轴如下MotionEvent#offsetLocation方法可调整坐标原点,以影响MotionEvent#getX,MotionEvent#getY值,以匹配子View的坐标参考系,进而进行事件处理。注意&…

本地Linux服务器使用Docker快速部署SyncTV

文章目录前言1. Docker部署2. 简单使用演示3. 安装cpolar内网穿透4. 配置公网地址5. 配置固定公网地址前言 当想和异地恋人同步看恐怖片却因网络延迟错过惊悚瞬间,或与朋友组队观看电竞直播时无法实时吐槽…这些尴尬场景或许你都经历过。而SyncTV的存在正是为了解决…

搭建比分网服务器怎么选数据不会卡顿?

一、 体育比分网站的独特技术挑战体育比分网站是互联网服务中的"极限运动",面临三大技术高峰:数据实时性:NBA最后2分钟的比分延迟超过1秒就会流失用户流量脉冲:欧冠决赛时流量可能是平时的50-100倍全球覆盖:…

7月18日总结

bashupload / upload files from command line 远程文件包含 介绍一个上传文件的网站 bashupload.com 简介 借助bashupload.com,可以简朴地从下令行上传文件,剖析给其他的服务器,桌面和移动装备,最大支持25G。上传的文件会被保留…

【leetcode】3202. 找出有效子序列的最大长度(2)

文章目录题目题解题目 3202. 找出有效子序列的最大长度(2) 给你一个整数数组 nums 和一个 正 整数 k 。 nums 的一个 子序列 sub 的长度为 x ,如果其满足以下条件,则称其为 有效子序列 : (sub[0] sub[1]) % k (su…

Linux内核网络栈深度剖析:inet_connection_sock.c的服务器端套接字管理

引言 在Linux网络协议栈中,net/ipv4/inet_connection_sock.c是实现面向连接协议(如TCP)服务器端逻辑的核心文件。它承载了从端口绑定、连接接受到资源回收的全流程管理,是构建高并发网络服务的基石。本文将深入解析其关键机制和实现原理。 一、地址匹配:端口冲突检测的基…

机器学习中核心评估指标(准确率、精确率、召回率、F1分数)

混淆矩阵混淆矩阵是一个表格,用于总结分类模型在测试集上的预测结果,特别是当真实标签已知时。它将预测结果分为四种情况(记忆:实际和预测一致为True,预测为正是Positive):真正例: 实…

从零搭建Cloud Alibaba

1.初始环境的搭建 1.1环境要求: Spring Boot 3.2.5: 基于最新的 Spring Framework 6.x。支持现代化开发模式,帮助开发更加高效。 JDK 17 或更高版本: Spring Boot 3.x 开始要求 Java 17 作为最低运行环境。 Spring Boot 与 Sp…

Spring AI 工具调用

文章目录简述工具定义工具上下文直接返回方法:直接返回工具执行框架控制工具执行用户控制的工具执行异常处理简述 工具调用(也称为函数调用)是 AI 应用程序中的一种常见模式,允许模型与一组 API 或工具进行交互,从而增…

GitHub 趋势日报 (2025年07月20日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图2033maybe737remote-jobs674Hyprland581n8n572shadPS4341bknd281Resume-Matcher249…

替代标准库:实用 C++ 开源组件推荐

C17 及 C20 引入了许多现代化的标准库组件,如 std::filesystem、std::optional、std::format、std::chrono 的增强,以及 std::expected 等。然而,在一些项目中,受限于老版本编译器、不完善的标准库实现,或跨平台兼容性…

夯实基础:配置Java开发环境JDK与构建工具Maven

摘要:在前面两个章节中,我们一同探讨了Spring Boot的革命性优势,并深入其内部,理解了起步依赖、自动配置和内嵌容器这三大核心基石。理论的铺垫是为了更稳健的实践。从本章开始,我们将正式“卷起袖子”,搭建…

PyCharm 未正确关联 .jpg 为图片格式

1. PyCharm 未正确关联 .jpg 为图片格式PyCharm 可能错误地将 .jpg 文件识别为文本文件,导致无法预览图片。解决方法手动关联 .jpg 为图片格式:Windows/Linux: File → SettingsmacOS: PyCharm → Preferences进入 Editor → File Types。在 Recognized …

DM8数据库Docker镜像部署最佳实践

DM8数据库Docker镜像部署最佳实践一、Docker加载DM8镜像二、Docker创建DM8容器三、验证目录是否挂载成功一、Docker加载DM8镜像 1.下载DM8镜像,由于官网暂未提供docker镜像下载,可通过网盘下载:https://pan.quark.cn/s/fe38ba821a2a 2.打开…