首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用烧瓶丑化ES6 javascript?

如何用烧瓶丑化ES6 javascript?
EN

Stack Overflow用户
提问于 2020-01-05 17:53:57
回答 3查看 990关注 0票数 4

我正在搜索一个Flask-Assets过滤器,它允许我对javascript进行丑陋化并支持ES6语法。我尝试使用uglifyjs-es二进制,而不是uglifyjs,但是我不知道如何配置过滤器来使用uglifyjs-es二进制。

我有这个:

代码语言:javascript
复制
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的一个很好的替代方案,那么您就赢得了赏金;)

EN

回答 3

Stack Overflow用户

发布于 2020-01-06 19:33:37

如果您已经使用npm安装了uglifyjs,那么它应该位于项目中的node_modules文件夹中。

您可以按以下方式配置烧瓶:

代码语言:javascript
复制
app = Flask(__name__)
app.config['UGLIFYJS_BIN'] = 'path/to/node_modules/uglify-js/bin/uglifyjs'

关于uglifyjs,你知道它是没有维护的。但是,如果使用它来减少代码,它仍然是一个很好的选择。

如前所述,这里

  • uglify-js只支持ES5代码作为输入。
  • 丑陋-es也支持ES6,但是错误的,并已被放弃。
票数 2
EN

Stack Overflow用户

发布于 2020-07-29 22:28:41

Terser的命令行几乎与ls一样具有巴洛克风格。我发现,对我来说,最简单的方法是在Terser插件中使用Rollup,并且已经准备好了用于西部集的卷起过滤器。这样,所有的Terser配置都是在Rollup的配置中完成的,您可以在筛选器额外的args中指定该配置。ES6模块的最小Terser配置:

代码语言:javascript
复制
{
  compress: {ecma: 2015, module: true},
  mangle: {module: true},
  output: {ecma: 2015},
  parse: {ecma: 2015},
  rename: {},
}

使用配置好的Terser插件,您现在可以将它当作应用的包和小型化过滤器一样使用:

代码语言:javascript
复制
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',
)
票数 1
EN

Stack Overflow用户

发布于 2020-01-06 19:22:28

看起来您需要设置一个名为UGLIFYJS_BIN的环境变量。请参阅这里指令,或到这里来指令。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59602633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档