Некоторые особенности es6 не понятны grunt uglify js?

Я использовал grunt-uglify в своем проекте, и я работаю с es6. для некоторых функций es6, таких как жирная стрелка, выдается ошибка. Я думаю, что уродство не понимает этот синтаксис. так у меня есть способ исправить эту проблему. Я имею в виду, могу ли я использовать что-нибудь, чтобы uglify понимал все синтаксисы es6?

4 ответа

Решение

Официально пока нет инструмента, который минимизирует ES6 (другие инструменты, такие как компилятор Google Closure, поддерживают ES6, но переносят его в "традиционный js", а затем минимизируют).

Хотя не все функции es6 поддерживаются в UglifyJ, ветка Harmony в UglifyJS2, похоже, поддерживает функции стрелок и другие функции.

Вы можете прочитать обсуждение этого вопроса в github здесь. Кажется, нет другого варианта ждать (или создать свой собственный минификатор ES6).

Обновить

Теперь у вас есть 2 варианта для минимизации ES6:

Вы можете использовать harmony филиал grunt-contrib-uglify,

npm install git://github.com/gruntjs/grunt-contrib-uglify.git#harmony --save-dev

отлично работает с es6. Никаких дополнительных настроек для grunt не требуется.

Grunt плагин ES6 анализатор, Mangler / компрессор и Beautifier инструментарий для ES6+ теперь доступен:

https://github.com/adascal/grunt-terser

Отличная работа, все работает как положено.

В harmony филиал grunt-contrib-uglifyявляется устаревшим, это не устойчивое решение.

Если результирующий код не должен использовать синтаксис ES6, также возможно перенести ES6 в ES5, прежде чем улучшить ваш код. Это можно сделать, например, с помощью задачи Grunt https://github.com/termi/grunt-es6-transpiler.

Я только что обновился до uglify-js@2.8.29 и все заработало.

Другие вопросы по тегам