功能清除

  • 警告将被清除掉,所以要确保在使用webpack4不打印警告。
  • require.include语法被废弃
  • 不再为nodejs模块引入polyfill

    长期缓存

  • 确定的 Chunk、模块 ID 和导出名称。说明:webpack4之前为了包的体积考虑把ID设计为从个位数顺序自增数字,但现在也意识到了这不利于缓存。webpack5的长期缓存算法以确定性的方式为模块和分块分配短的(3 或 5 位)数字 ID, 这是包大小和长期缓存之间的一种权衡。

  • 真正的内容哈希
    • 当使用 [contenthash] 时,Webpack 5 将使用真正的文件内容哈希值。之前它 “只” 使用内部结构的哈希值。 当只有注释被修改或变量被重命名时,这对长期缓存会有积极影响。这些变化在压缩后是不可见的。
  • 持久化缓存

    • webpack4中需要cache-loader和babel-loader来开启构建缓存。而且缓存是在硬盘里。webpack5默认开启缓存,而且是缓存在内存里,
    • 缓存在文件里还有缓存淘汰策略

      构建优化

  • tree-shaking

    • 模块嵌套的tree-shaking
    • 内部模块的tree-shaking。——使用innerGraph算法实现

    • 代码生成

      可以生成es6的代码,在webpack4之前只能生成es5的代码

      模块联邦(重大)

  • 实现微前端

  • 提供模块联邦插件配置生产者和消费者,然后消费者通过CDN的方式加载生产者提供的组件
  • 原理:生产者提供get函数,参数为module作为key,然后通过key在moduleMap中找对应的组件