您需要使用带有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 似乎没有必要,因为它们落后于前端世界中最新最好的文档和软件包版本。