Играюсь тут с Google Closure Compiler (GCC, не путать с GCC =)). Который раз уже. Время идёт, ничего не меняется: он слишком умный и слишком тупой одновременно.
На входе ES6-модули: export-ы, import-ы, всё такое. На выходе то же самое хочу.
В ADVANCED-режиме оно собирает всё в один файл и люто оптимизирует. Впечатляет, но не годится: если проект большой, грузить все скрипты при старте приложения – нехорошо. Например, не нужно грузить админские скрипты обычным юзерам.
В WHITESPACE_ONLY-режиме эта дрянь не ищет импортируемые модули в файловой системе, ей надо все зависимости явно в параметре --js
указывать. Если не указать, то ругается на несуществующий импортируемый файл, хотя казалось бы – какая ей в жопу разница в WHITESPACE_ONLY-режиме-то? А если указать, то она опять же всё сконкатенирует в один файл, только теперь тупо в лоб и некорректно (import останутся, хотя импортируемый файл сконкатенирован в этот же исходник).
Хочется такую ужималку, чтобы:
-
сжимала каждый файл по-отдельности;
-
резала whitespaces и каменты;
-
внутри модуля переименовывала всё покороче;
-
export-ы не трогала;
-
ваще идеально если бы была аннотация «при сжатии переименовать в такое-то короткое имя», чтобы не случайно короткие имена выбирались;
-
и ещё идеальней если бы эту аннотацию можно было бы вешать на экспорты, и при обработке других файлов, где этот экспорт импортируется, она б тоже переименовывала.