HardSourceWebpackPlugin适用于Webpack 4及更早版本,通过独立中间缓存层跳过AST解析等步骤,二次构建提速可达90%;Webpack 5+内置filesystem缓存开箱即用、兼容性更好,推荐作为默认选择,两者不可混用。

Webpack 在大型项目中构建慢,主要卡在重复解析和编译相同模块上。HardSourceWebpackPlugin 和 Webpack 5+ 内置的 filesystem 缓存 都能显著减少二次构建等待时间,但适用阶段和配置逻辑不同。
HardSourceWebpackPlugin:适合 Webpack 4 及更早版本的强缓存方案
它为模块提供独立的中间缓存层,首次构建后,后续构建可跳过 AST 解析、依赖分析等耗时步骤,提速可达 90%。适用于尚未升级 Webpack 5 的老项目:
- 安装:
npm install hard-source-webpack-plugin -D - 基础配置(加到 plugins 数组):
new HardSourceWebpackPlugin() - 推荐增强配置(避免缓存误命中):
设置configHash基于 webpack 配置内容生成哈希;
用environmentHash监控package-lock.json或yarn.lock,确保依赖变更时自动清缓存;
开启cachePrune自动清理过期缓存,防磁盘占满。
注意:HardSource 与某些 loader(如 thread-loader)或插件(如 DefinePlugin 动态值)存在兼容问题,若构建报错,可先禁用它排查。
Webpack 5+ filesystem 缓存:开箱即用、更轻量可靠的默认选择
Webpack 5 内置了更稳定、更深度集成的持久化缓存机制,无需额外插件,且与大多数 loader/plugin 兼容性更好:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
立即学习“Java免费学习笔记(深入)”;
- 启用方式极简:
cache: { type: 'filesystem' }(写在 webpack 配置顶层) - 它会自动缓存:模块解析结果、loader 处理输出、AST、模块图等;
默认缓存路径为node_modules/.cache/webpack,可配cache.directory自定义; - 关键细节:
缓存键默认包含配置、依赖、源码内容哈希;
修改babel.config.js或webpack.config.js会触发缓存失效;
开发中改代码,只重编译变化文件及其依赖,其余直接复用缓存。
相比 HardSource,它不需手动管理 hash 策略,也不易因插件冲突崩溃,是 Webpack 5+ 项目的首选。
搭配使用建议:不混用,按版本选型
两者目标一致,但底层机制不同,**不建议同时启用**,否则可能互相干扰或浪费磁盘空间:
- Webpack 4 项目 → 用 HardSource;
- Webpack 5+ 项目 → 关闭 HardSource,只用
cache: { type: 'filesystem' }; - 若仍觉构建慢,可在 filesystem 缓存基础上叠加:
限定include范围(只处理src);
给babel-loader加cacheDirectory: true(虽已冗余,但部分旧版 babel 插件仍依赖);
配合thread-loader并行处理 JS(注意仅对中大型项目有效)。
缓存生效后,本地开发保存文件的热更新响应通常能从 3–5 秒压到 300–800 毫秒,CI 构建时间也可下降 40% 以上。

















