Django压缩器无法丑化javascript

时间:2019-06-06 15:16:58

标签: django uglifyjs django-compressor terser

我希望同时使用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及更高版本。

我发现了另一个名为terser的丑陋者,它在带有es6代码的终端上运行良好。因此,我尝试用terser替换上述设置,即:

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

这在django-compressor中也不起作用。结果是文件变小但不丑。

对于将其与django-compressor或其他软件包配合使用的任何建议,我们将不胜感激。

1 个答案:

答案 0 :(得分: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',
]