esbuild 是個 JavaScript bundler & minifier,在 GitHub 上的副標提到了重點在於速度:
An extremely fast JavaScript bundler and minifier
從壓縮時間可以看出來優勢:
另外從最終的檔案大小也可以看出來,與最小的 rollup + terser 組合沒有差太多:
實際拿個 jQuery 跑看看,可以看出來壓縮的效果還行:
-rw-r--r-- 1 gslin staff 89228 Feb 19 06:03 jquery-3.4.1-esbuild.min.js -rw-r--r-- 1 gslin staff 280364 May 2 2019 jquery-3.4.1.js -rw-r--r-- 1 gslin staff 88145 May 2 2019 jquery-3.4.1.min.js
速度主要是透過 Golang 並且平行化運算達到的:
- It's written in Go, a language that compiles to native code
- Parsing, printing, and source map generation are all fully parallelized
- Everything is done in very few passes without expensive data transformations
- Code is written with speed in mind, and tries to avoid unnecessary allocations
不過作者有提到這個專案畢竟比較新,還沒有被時間磨練過,可能會有些 bug:
This is a hobby project that I wrote over the 2019-2020 winter break. I believe that it's relatively complete and functional. However, it's brand new code and probably has a lot of bugs. It also hasn't yet been used in production by anyone. Use at your own risk.
可以先放一陣子看看,讓一些先賢先烈把比較大的 bug 踩一踩修一修...
還有這句: "I don't personally want to run a large open source project, so I'm not looking for contributions at this time."