如何在烧瓶中缩小 ES2016 或转换为 ES2015?
How to minify ES2016 or convert to ES2015 in flask?
我正在使用 flask-assets 和 none 可用过滤器(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']
))
最后一件事,这只是(就像)我的意见,我强烈建议为您的前端资产切换到基于 javascript/node 的构建过程(您已经在使用 babel 了!)。根据您正在开发的内容,gulp 或 webpack 可以很好地用于您的前端构建。 Flask-assets/webassets 似乎没有必要,因为他们落后于前端世界中最新和最伟大的文档和包版本。
我正在使用 flask-assets 和 none 可用过滤器(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']
))
最后一件事,这只是(就像)我的意见,我强烈建议为您的前端资产切换到基于 javascript/node 的构建过程(您已经在使用 babel 了!)。根据您正在开发的内容,gulp 或 webpack 可以很好地用于您的前端构建。 Flask-assets/webassets 似乎没有必要,因为他们落后于前端世界中最新和最伟大的文档和包版本。