我正在搜索一个Flask-Assets过滤器,它允许我对javascript进行丑陋化并支持ES6语法。我尝试使用uglifyjs-es二进制,而不是uglifyjs,但是我不知道如何配置过滤器来使用uglifyjs-es二进制。
我有这个:
my_app_js = Bundle(
'js/MyApp.js',
filters='uglifyjs',
output='my_app_js.js'
)来自Webasset文档:
UglifyJS是为NodeJS编写的外部工具;此筛选器假定uglifyjs可执行文件位于路径中。否则,可以定义UGLIFYJS_BIN设置。
也许解决方案是存在的,但我不知道在哪里以及如何更改UGLIFYJS_BIN设置,知道吗?
也是,我读到这里说uglifyjs-es项目不再维护。terser似乎是另一种选择,但它也能用作过滤器吗?
编辑
如果您通过一个代码示例知道uglifyjs-es的一个很好的替代方案,那么您就赢得了赏金;)
发布于 2020-01-06 19:33:37
如果您已经使用npm安装了uglifyjs,那么它应该位于项目中的node_modules文件夹中。
您可以按以下方式配置烧瓶:
app = Flask(__name__)
app.config['UGLIFYJS_BIN'] = 'path/to/node_modules/uglify-js/bin/uglifyjs'关于uglifyjs,你知道它是没有维护的。但是,如果使用它来减少代码,它仍然是一个很好的选择。
如前所述,这里:
发布于 2020-07-29 22:28:41
Terser的命令行几乎与ls一样具有巴洛克风格。我发现,对我来说,最简单的方法是在Terser插件中使用Rollup,并且已经准备好了用于西部集的卷起过滤器。这样,所有的Terser配置都是在Rollup的配置中完成的,您可以在筛选器额外的args中指定该配置。ES6模块的最小Terser配置:
{
compress: {ecma: 2015, module: true},
mangle: {module: true},
output: {ecma: 2015},
parse: {ecma: 2015},
rename: {},
}使用配置好的Terser插件,您现在可以将它当作应用的包和小型化过滤器一样使用:
from flask_assets import Bundle
from webassets.filter import register_filter
from webassets_rollup import Rollup
register_filter(Rollup)
all_css = Bundle(
'css/app.scss', filters='node-scss,cleancss', output='dist/all.%(version)s.min.css',
)
all_js = Bundle(
'js/main.js', filters='rollup', output='dist/all.%(version)s.min.js',
)https://stackoverflow.com/questions/59602633
复制相似问题