了解到编写一个js打包工具需要考虑到的因素:
- 模块化;(CommondJS模块、ES6模块)
- 代码压缩算法(减少HTTP传输时间)
- SourceMap(便于查看生产代码报错的具体位置)
- 支持 JSX 内容转换成 JavaScript
- 资源路径?
- 支持将现代语言语法降低到早期语言版本(如babel,ES6、ES7转化成ES5)
- 提供哪些配置项(入口文件、输出目录、等)
第六点非常重要,可是文中工具 esbuild 还不支持。但它的优势是构建速度是别的主流工具的10-100倍啊(如下图)!但为了可靠性和稳定性,我还是选择 webpack。
它运行快的最大原因估计是用 go 语言写的,可编译成机器语言执行。而 Webpack、Rollup 都是用JavaScript 开发的,