最近,Parcel2
發佈beta3
版本。工具
該版本最大的更新是:替換底層所用的JS
編譯器,從Babel
替換爲SWC
,使總體編譯速度較以前快了10x倍。性能
SWC
是用Rust
寫的JS
編譯器,目標是替代Babel
。他的做者是97年生的 강동윤,他寫swc
時上大二。
爲了與打包工具老大哥Webpack
差別化競爭,Parcel
將零配置做爲他的賣點(對標Webpack
繁瑣的配置)優化
其中,高級ES
語法會根據開發者提供的browserslist
目標版本降級爲對應ES5
語法。網站
非標準語法,相似JSX
、TS
,開發環境特性,相似React Fast Refresh
都是開箱即用的。ui
這一切的實現,都創建在基於Babel
的JS編譯器上。spa
而JS
相比Rust
語言層面的速度劣勢,是Babel
再怎麼優化也沒法彌補的。code
因而,便有了開篇提到的替換JS
編譯器。three
Parcel
團隊表示,SWC
比Babel
快20x倍
值得玩味的是,在提供benchmark
秀性能時,Parcel
使用了esbuild
的benchmark
。開發
esbuild
使用10份threeJS
的生產包,對比不一樣打包工具在默認配置下的打包速度做爲benchmark
esbuild
是一個用Go
寫的JS
打包工具,於2020年1月開源。他的做者是Figma
的CTO
Evan Wallace。rem
一經開源,沒有任何花裏胡哨的新功能,上來就是硬剛編譯速度。
成績斐然:
能夠看到Parecel2
倒數第三。
而老大哥Webpack5
之因此沒有倒數第一,是由於倒數第一是Webpack4
。
Evan隨後又更新了benchmark
:
雖然Parcel
的優點是:極簡、零配置。但被這麼拉出來比速度,結果還如此慘烈。
想必Parcel
團隊成員內心是極度憋屈的。
因而,兄弟們,其餘事情先放一放,讓咱們一塊兒卷編譯速度!
通過幾個月開發,終於有了開篇提到的beta3
。並且必須用你esbuild
的benchmark
跑一遍,找回場子!
事實上,在Webpack
已經發展多年的今天,可以突出Webpack
重圍,佔有一席之地的打包工具,都走着差別化競爭的路線。
在Google
工程師Surma和其餘人一塊兒開發的打包工具評價網站tooling.report上能夠看到:
Webpack
是支持功能最全面的。其餘主流打包工具則各有側重。
劇本的走向本應是:
Webpack
繼續走他六邊形戰士的路線
其餘打包工具各自安好,走差別化路線。
然而,esbuild
的異軍突起,對這些工具形成了降維打擊。
編譯速度在開發時確實是剛需。
Parcel
不是第一個,也毫不是最後一個做出改變的工具。
有人擁抱變化,有人被迫接受變化。
Vite
則說:卷bundle
速度?那我在開發時採用No-Bundle
方案,不和大家捲了。
編譯速度對你來講重要麼?歡迎留下你的討論。