簡體   English   中英

babel-minify vs terser(相反uglify-js)

[英]babel-minify vs terser (instead uglify-js)

我對ES6 +(稱為現代JavaScript)相對較新,但似乎我想在瀏覽器中使用它我需要babel- minifyterser (首先我認為Babili是另一個玩家,但它只是Babel-Minify 的舊名稱

關於瀏覽器的polyfills,有生產就緒的解決方案,如@ babel / polyfillPolyfill.io ,可以實現將更小更快的代碼發送到現代瀏覽器,因為它們不需要/很少填充(快速測試瀏覽器,加載動態地需要polyfill然后啟動我們的應用程序的主腳本)。 因此,使用這些現代技術似乎絕對合理。

選擇babel-minify terserterser是我的兩難選擇。

該團隊的WebPack 決定切換terser在即將到來的WebPack 5。
Babel團隊制作了一張比較表,顯示terser速度要好得多。
文檔 terserterser uglify-es一個分支,以前被廣泛使用過。

這些讓我覺得我必須選擇terser

但另一方面,Babel仍然需要進行轉換(並且可以用於許多有用的東西)。 他們很久以前就在這個行業(盡管Babili/babel-minify2016年8月26日首次發布 ,所以uglify更老了)。 他們在GitHub上有一個很棒的開發者社區,錯誤可能已經發現並且很快就會被修復。 基於這些,我對生產安全輸出感到更加信任。 但是我還沒有發現顯示的親的任何物品, babel-minifyterser

問題:

我會選擇terser因為它看起來很有希望並且上面寫的原因,但是:

  • 我應該使用babel-minify terser不是terser什么?
  • 使用Babel包做所有事情有什么好處嗎?

在大多數情況下,無論你是否使用terser或babel-minify,都無關緊要。 也就是說,使用babel-minify的好處是與babel生態系統的其他部分緊密結合。 如果您在webpack之類的捆綁器之外或在CLI上使用babel,則babel-minify可以與其他babel變換同時運行,因此需要最少的額外配置。 如果您通過例如babel-loader啟用了緩存,Babel-minify也可以使用與其他babel插件相同的緩存。

最初,babel-minify(然后是babili)被創建,因為沒有與ES6或更新版本兼容的uglify-js版本,並且babel已經有一個支持新語法的解析器。 從那以后,terser已經成為一個很好的選擇,並且比babel-minify表現得更快,同時仍然支持ES6(可能因為它沒有綁定到babel的變換管道)。 由於這個和你列出的原因,terser可能是現在選擇的最佳選擇。

一個可能的例外是,如果您使用尚未標准化的實驗語法作為ECMAScript的一部分,但在babel的解析器中支持(可能帶有插件)。 在這種情況下,babel-minify可能被證明是有益的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM