更好的treeshaking
嵌套对象打包,未引用的值不会被打包
// app1.jsexport const a = {b: {c: 1,b: 2,},};// app2.jsimport { a } from "./app1";export const test2 = () => {return a.b.b;};//index.jsimport { test2 } from "./app2";console.log(test2)
<a name="sP5rF"></a>### webpack4 打包结果:```javascriptfunction(e,t,r){"use strict";r.r(t);const n={c:1,b:2};console.log(()=>n.b)}]
webpack5 打包结果:
(()=>{"use strict";const o=2;console.log((()=>o))})();
优化持久缓存
开发模式下,webapck打包是方式递归文件,打包后生成一个
graph 来记录文件依赖关系,之后将文件存放在内存中,每当更改文件,都会改变 graph,造成性能问题。webapck 引入增量编译的概念,Webpack 会读取记录做增量编译。之前使用cache-loader 与 babel-loader 的 cacheDirectory 属性进行文件缓存,v5 之后 默认开启 memory 模式,缓存
NodeJS 的 polyfill 脚本被移除
在 v4 及以前的版本中,对于大多数的 Node 模块会自动添加 polyfill 脚本,polyfill 会加到最终的 bundle 中,如:
crypto.js。
v5中可关闭 polyfill 来减少打包体积
模块联邦
支持两个 webacpk 引用共享资源,类似与 dll,external的加强版
