gpt4 book ai didi

flask - 如何在 flask 中缩小 ES2016 或转换为 ES2015?

转载 作者:行者123 更新时间:2023-12-05 04:00:59 24 4
gpt4 key购买 nike

我正在使用 flask-assets并且没有可用的过滤器(rjsmin、jsmin、closure_js、uglifyjs 等)能够缩小 ES2016 JavaScript 文件。缩小后的文件会在浏览器控制台上产生错误(由于转换不当),甚至在提供资源之前执行时会崩溃。另外,我尝试了 webassets 的 Babel 过滤器而且我没有对文件进行任何更改,它们只是在没有更改的情况下提供。

我也无法强制执行闭包或 babel extra_args 来自定义它们的操作。

有什么提示或建议吗?

示例代码:

from flask_assets import Bundle
page_js = Bundle(
'js/code_with_es2016.js',
filters='rjsmin',
output='public/js/code.min.js'
)

最佳答案

您需要将 babel 过滤器与 babel-presets-env 一起使用。 webassets 文档有点落后于最近的发展,考虑到 javascript 世界的发展速度,这不足为奇。

所以首先你需要全局安装babel-cli:

npm install -g babel-cli

现在你需要在本地安装 babel-preset-env,所以在你的项目目录中做:

npm install --save babel-preset-env

最后,这是如何使用 flask-assets 设置您的包:

from flask_assets import Bundle, Environment
from webassets.filter import get_filter

assets = Environment()
assets.init_app(app)
babel = get_filter('babel', presets='babel-preset-env')
assets.register('js_all', Bundle(
'js/code_with_es2016.js',
output='public/js/code.min.js',
filters=[babel, 'rjsmin']
))

您还可以通过指定绝对路径或相对路径来告诉 babel 您的 babel-preset-env 安装位置:

preset_location = './path/to/node_modules/babel-preset-env'
babel = get_filter('babel', presets=preset_location)
assets.register('js_all', Bundle(
'js/code_with_es2016.js',
output='public/js/code.min.js',
filters=[babel, 'rjsmin']
))

最后一件事,这只是(就像)我的意见,我强烈建议为您的前端 Assets 切换到基于 javascript/节点的构建过程(您已经在使用 babel 了!)。根据您正在开发的内容,gulp 或 webpack 可以很好地用于您的前端构建。 Flask-assets/webassets 似乎是不必要的,因为它们落后于前端世界中最新最好的文档和包版本。

关于flask - 如何在 flask 中缩小 ES2016 或转换为 ES2015?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55712578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com