babel-minify против terser (вместо uglify-js) - PullRequest
0 голосов
/ 05 октября 2018

Я относительно новичок в ES6 + (называемом современным JavaScript), но мне кажется, что если я хочу использовать его в браузерах, мне нужно babel-minify или terser .(Сначала я подумал, что Babili - это еще один игрок, но это просто старое имя Babel-Minify)

О полифиллах для браузера есть готовые к использованию решения, такие как @ babel / polyfill или Polyfill.io , и с их помощью можно добиться отправки меньшего + более быстрого кода в современные браузеры, поскольку им не требуется / мало полизаполнений (быстро протестируйте браузер, загрузите необходимые полифиллы и затем запустите нашосновной скрипт приложения).Поэтому использование этих современных технологий представляется абсолютно разумным.

Вот моя дилемма о выборе babel-minify или terser.

Команда Webpack решила переключить на terser в следующем Webpack 5.
Команда Babel сделала таблицу сравнения , показывающую terser намного лучше
Документы говорят , что terser - это вилка uglify-es, которая широко использовалась ранее.

Это заставляет меня думать, что я должен выбрать terser.

Но, с другой стороны, Вавилон по-прежнему необходим для трансформации (и может использоваться для многих полезных вещей).Они давно работают в этом бизнесе (хотя Babili/babel-minify был впервые выпущен 26 августа 2016 года, поэтому uglify старше).У них есть отличное сообщество разработчиков на GitHub, ошибки могут быть обнаружены и исправлены раньше.Исходя из этого, я чувствую больше доверия к ним, когда дело доходит до безопасного производства продукции.Но я не нашел ни одной статьи, показывающей профи за babel-minify сверх terser.

Вопросы:

Я бы пошел сterser потому что это кажется многообещающим и причины написаны выше, но:

  • В каких случаях я должен использовать babel-minify over terser?
  • Есть ли у него какие-либоПреимущества работы с пакетами Babel?

1 Ответ

0 голосов
/ 11 января 2019

В большинстве случаев не имеет большого значения, используете ли вы terser или babel-minify.При этом выгода от использования babel-minify будет заключаться в тесной интеграции с остальной частью babel-экосистемы.Если вы используете babel вне пакета, такого как webpack, или в CLI, babel-minify может быть запущен одновременно с другими преобразованиями babel, и, следовательно, требует минимальной дополнительной настройки.Babel-minify также сможет использовать тот же кеш, что и остальные плагины babel, если у вас включено кэширование, например, через babel-loader.

Первоначально babel-minify (тогда babili) был создан потому, чтоне было никакой версии uglify-js, совместимой с ES6 или новее, и у babel уже был парсер, который поддерживал новый синтаксис.С тех пор terser стал хорошей альтернативой и работает быстрее, чем babel-minify, но при этом поддерживает ES6 (возможно, потому, что он не привязан к конвейеру преобразования babel).Из-за этого и по причинам, которые вы перечислили, terser, вероятно, будет лучшим вариантом для выбора сейчас.

Одним из возможных исключений будет, если вы используете экспериментальный синтаксис, который еще не был стандартизирован как часть ECMAScript, но поддерживаетсяв парсере бабела (возможно с плагином).В этом случае, babel-minify может оказаться полезным.

...