结论ESBuild可以用于生产环境,可以有效提高项目构建速度。基于webpack的项目可以使用esbuild-loader替代ts-loader和babel-loader来提高文件编译速度,但不能作为插件使用。ESBuild的构建API是基于物理文件进行处理的,而Webpack构建过程是通过操作内存中的文件来处理的。ESBuild不能在两种场景下使用:当需要ES5代码兼容低版本浏览器时;项目中使用babel-plugin相关插件时。ESBuild仅将代码编译为ES6。ESBuild不支持AST的操作能力,因此无法兼容babel-plugin相关插件处理AST的能力。什么是ESBuildESBuild是一个快速的JS打包工具,比现有的打包工具快10~100倍。特性无需缓存即可实现基本打包支持ES6和CommonJS模块支持ES6TreeShaking小型插件其他内置支持编译jsx不足:对JS语法的支持不足不支持的语法将“原样输出”到构建产品顶层的awaitasyncawaitBigIntHashbang语法不支持AST过程的能力扩展,这将导致依赖AST处理的babel-plugins无法工作。例如:babel-plugin-import,或者自定义的babel-plugins不兼容低版本浏览器。esbuild只是将代码编译成es6,不支持TS类型检查。作者明确表示以后不支持TS类型检查。需要引入额外的类型检查插件。原理基于ESModuleGo语言开发,比V8的JIT更有性能优势。parallelprocessingparsing,buildingproducts,generationsourcemaps支持多线程,高效内存使用vsvitehttps://github.com/vitejs/vite底层是ESModule,依赖ESBuild的transformAPI能力swchttps://github.com/swc-project/swcAPI功能transform将文件编译成jsbuild和buildSync使用transform转换代码和压缩服务以重用子流程以避免性能浪费。封装trasnform并构建如何应用基于webpack的项目使用esbuild-loader替代ts-loader或babel-loader类型检查可以使用fork-ts-checker-webpack-plugin完成参考资料Vite官网ESbuild介绍
