Django 压缩器不丑化 javascript

Django compressor does not uglify 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 及更高版本。

我发现了另一个名为 terser 的丑化工具,它可以在终端上使用 es6 代码完美运行。因此,我尝试将上述设置替换为更简洁的设置,即:

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

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

我将不胜感激关于使用 django-compressor 或替代包进行此操作的任何建议。

如果您查看文档,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',
]