我使用的是flask-assets,但没有可用的过滤器(rjsmin、jsmin、closure_js、uglifyjs等)。能够缩小ES2016 JavaScript文件。缩小的文件在浏览器控制台上产生错误(由于错误的转换),甚至在服务资源之前执行时崩溃。另外,我也尝试过webassets的Babel filter,它不会对文件做任何更改,它们只是在没有更改的情况下提供。
我也不能设法强制执行闭包或babel extra_args来定制它们的操作。
有什么建议或建议吗?
示例代码:
from flask_assets import Bundle
page_js = Bundle(
'js/code_with_es2016.js',
filters='rjsmin',
output='public/js/code.min.js'
)发布于 2019-04-17 21:53:42
您将需要在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-preset-env的绝对路径或相对路径来告诉babel安装它的位置:
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- seem /webasset似乎是不必要的,因为它们落后于文档和软件包版本,无论前端世界中最新和最好的是什么。
https://stackoverflow.com/questions/55712578
复制相似问题