- 多了 资源模块 ```javascript webpack5 以前如果要解析 img、txt 文本,就需要引入 file-loader、url-loader、raw-loader, webpack5 引入了资源模块取代了这个 loader 比如 asset/source 替代了 raw-loader 导出资源的源代码 asset/resource 替代了 file-loader 向输出目录拷贝文件 asset/inline 替代了 url-loader
{ test: /.png/, type: ‘asset/resource’ // 向输出目录输出文件 }
{ test: /.txt/, type: ‘asset/source’ }
2. 对 模块 id 和 chunk id 进行了优化
> webpack5 以前,如果不是从 entry 入口打包的 chunk 文件,都会以 1 2 3 文件命名方式命名,如果删除某些文件,可能会导致缓存失效
> webpack5 可以设置 id 名称,按照模块的名称生成,对缓存友好
3. 移除了 polyfill
```javascript
/webpack5 以前,如果引入一些第三方模块,这些模块会自动启用 polyfill
webpack5 需要手动引入
resolve: {
fallback: {
'crypto': requrie.resolve('crypto-browerify') || false
}
}
- 更强大的 tree-shaking ```javascript webpack4 的tree-shaking 比较简单,主要根据 import 引入的变量是否在当前模块出现过 import {one, two} from ‘./module’ log(one) // 因为 two 没有在这个模块出现,所以会被 tree-shaking
webpack5 可以进行更复杂的 tree-shaking 比如入口引入一个模块中的一个方法,这个模块又引入了其它模块中的一个方法,那么这些模块中没有用到的 方法都会被tree-shaking ```