#为什么 webpack 仍然必要

2022 使用率排名中 webpack 仍旧有着 85%的占有率

而目前完全仅适配 esm 来推动 esm 的库还是很少,比如 chalk5 这种,需要在文档里注明一下 cjs 开源用 chalk4

#webpack

webpack 忽略具体资源类型之间的差异,将所有代码或非代码文件都统一看做 Module

这样的优点太多了,很多时候缺的就是统一,封装组件也是为了统一等

  • 所有特性可以统一实现,如代码压缩、热更新、缓存等
  • 打包时资源之间更容易插入等,如 html 里插入 base64
  • 通过不同的 loader 可以处理任何资源

#编译流程

  • 输入:读取代码文件
  • 模块处理:loader 转移为 module,并转换为 AST,分析模块依赖关系,然后递归处理
  • 后处理:模块处理后进行的,比如模块合并,注入运行时,产物优化等,输出 chunk
  • 输出:将 chunk 写入文件系统