【问题标题】:How to minify ES2016 or convert to ES2015 in flask?如何在烧瓶中缩小 ES2016 或转换为 ES2015?
【发布时间】:2019-04-16 16:17:42
【问题描述】:

我正在使用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'
)

【问题讨论】:

    标签: flask babeljs flask-assets webassets


    【解决方案1】:

    您需要使用带有babel-presets-env 的babel 过滤器。 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']
    ))
    

    最后一件事,这只是(就像)我的观点,我强烈建议您切换到基于 javascript/node 的前端资产构建过程(您已经在使用 babel!)。根据您正在开发的内容,gulp 或 webpack 可能是您前端构建的理想选择。 Flask-assets/webassets 似乎没有必要,因为它们落后于前端世界中最新最好的文档和软件包版本。

    【讨论】:

    • 现在的问题(我已经遇到了这个问题,我也无法解决)是它找不到预设,因为它希望它安装在管理的同一文件夹中.py 及其远离该文件的几个文件夹。 "Couldn\'t find preset "babel-preset-env" relative to directory" 有没有办法指向预设?
    • 我已经更新了我的答案,以展示如何设置 babel 预设的路径。
    猜你喜欢
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 2022-07-15
    • 1970-01-01
    相关资源
    最近更新 更多