Компрессор Django не искажает javascript

Я хочу использовать Django Compressor для минимизации и уменьшения моих css и javascript. У меня это работает так, что я делаю автономное сжатие, и весь необходимый javascript сжимается правильно.

Проблема в том, что он не искажает код. Мои настройки:

STATICFILES_FINDERS = (
    "django.contrib.staticfiles.finders.FileSystemFinder",
    "django.contrib.staticfiles.finders.AppDirectoriesFinder",
    "compressor.finders.CompressorFinder",
)
COMPRESS_ENABLED = True
COMPRESS_OFFLINE = True
COMPRESS_YUGLIFY_BINARY = "yuglify"
COMPRESS_YUGLIFY_JS_ARGUMENTS = "--mangle"

yuglify на моем пути. Я попытался запустить его вручную в файле для проверки, например: yuglify file.js --mangle. Оказывается, yuglify (который является оболочкой вокруг uglify-js) не поддерживает es6 и выше.

Я нашел еще один uglifier под названием terser, который отлично работает из терминала с кодом es6. Поэтому я попытался заменить приведенные выше настройки более краткими, т.е.:

COMPRESS_YUGLIFY_BINARY = "terser"
COMPRESS_YUGLIFY_JS_ARGUMENTS = "--mangle"

Это также не работает в django-compressor. В результате файлы минимизируются, но не искажаются.

Я был бы признателен за любые предложения по работе с django-compressor или с альтернативным пакетом.


person darkpool    schedule 06.06.2019    source источник
comment
Это пустая трата вашего времени. Минимизированный код не сделает вашу страницу заметно быстрее. Уродливый код не помешает людям понять его. Объединение многих тонн огромных файлов в один избавит вас от громоздких дополнительных запросов, но будет не так эффективно, как отсутствие всего этого ненужного веса в первую очередь.   -  person Jan Kyu Peblik    schedule 06.06.2019


Ответы (1)


Если вы посмотрите на документы, значение по умолчанию для COMPRESS_JS_FILTERS равно

COMPRESS_JS_FILTERS = ['compressor.filters.jsmin.JSMinFilter']

Поэтому вам нужно добавить к нему фильтр 'compressor.filters.yuglify.YUglifyJSFilter'.

COMPRESS_JS_FILTERS = [
  'compressor.filters.jsmin.JSMinFilter',
  'compressor.filters.yuglify.YUglifyJSFilter',
]
person Krukas    schedule 06.06.2019