- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已按照 Flask_Assets documentation 中的说明尝试让自动前缀过滤器与 flask_assets 一起使用, 但它似乎没有应用过滤器。这是我的代码:
# construct flask app object
from flask import Flask, render_template_string
flask_args = { 'import_name': __name__ }
flask_app = Flask(**flask_args)
from flask_assets import Environment, Bundle
assets = Environment(flask_app)
assets.config['AUTOPREFIXER_BIN'] = 'postcss'
assets.config['AUTOPREFIXER_BROWSERS'] = [ '> 1%' ]
css_min = Bundle('../styles/mycss.css', filters='autoprefixer', output='styles/test.css')
assets.register('css_assets', css_min)
@flask_app.route('/')
def landing_page():
html = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">\
<head>{% assets "css_assets" %}\
<link rel="stylesheet" href="{{ ASSET_URL }}" type="text/css">\
{% endassets %}\
<title>Hello</title>\
</head>\
<h1>Hello World</h1>\
<p>Just a test of flask</p>'
return render_template_string(html), 200
if __name__ == '__main__':
flask_app.run(host='0.0.0.0', port=5000)
我已经能够成功应用 cssmin、pyscss、uglifyjs 和 jsmin 过滤器。我还可以在命令行上运行 autoprefixer 以成功编译转换后的输出:
postcss --use autoprefixer --autoprefixer.browsers "> 1%" -o test.css mycss.css
但是,当尝试通过 flask_assets 注册运行 autoprefixer 时,该过程既不会引发错误,也不会花费所需的时间进行编译。它确实生成了输出文件,但是当我检查生成的文件时,没有应用任何前缀。
更新:每当尝试为任何过滤器配置选项时,似乎都会出现此问题。我无法让 uglifyjs 接受 'UGLIFYJS_EXTRA_ARGS' 或让 pyscss 过滤器采用使用 'PYSCSS_STYLE' 的新样式。我尝试使用 os.environ['AUTOPREFIXER_BIN'] 将这些配置设置为环境变量,并尝试通过 flask.config['AUTOPREFIXER_BIN'] 传递它们。但是运行过滤器时没有应用任何配置设置。我也不清楚配置选项在代码本身的哪个位置是由 Bundle 或 Environment 构造的。
One SO post声称已经找到一种使配置设置起作用的方法,但该帖子并未显示需要如何设置 flask_assets 以获取这些选项的整个工作流程。
也许有人可以帮助我理解我做错了什么?
最佳答案
您的代码没有问题1。您只是没有为最新版本的 Autoprefixer 使用正确的过滤器.如果您查看该链接中的版本历史记录,自版本 6.0.0 以来, 它开始使用 postcss .您的代码适用于 6.0.0 之前的版本。
Webassets 已提供版本支持 after 6.0.0 (包含),通过提供 autoprefixer6
过滤器。
因此,您所要做的就是在初始化包时更改过滤器,如下所示:
css_min = Bundle('../styles/mycss.css', filters='autoprefixer6', output='styles/test.css')
不要使用os.environ
,那不是为Flask 和flask-extensions 设置配置变量的方式。 .为扩展设置配置的最常见(也是首选)方法是使用 flask Config 本身,在大型项目中,这是使用单独的配置文件完成的。扩展将从 flask 的配置中获取其配置选项。
根据您使用的扩展,您也可以像您所做的那样单独设置配置,但据我目前所见,很少使用。
请检查 Flask 的 Configuration related documentation有关如何“正确”为您的应用设置配置的一些很好的示例。
from flask import Flask, render_template_string
from flask_assets import Environment, Bundle
# construct flask app object
flask_args = {'import_name': __name__}
flask_app = Flask(**flask_args)
assets = Environment(flask_app)
# specify the bin path (optional), required only if not globally installed
assets.config['AUTOPREFIXER_BIN'] = 'path/to/postcss'
assets.config['AUTOPREFIXER_BROWSERS'] = ['> 1%', ]
# use the autoprefixer6 updated filter
css_min = Bundle('../styles/mycss.css', filters='autoprefixer6',
output='styles/test.css')
assets.register('css_assets', css_min)
@flask_app.route('/')
def landing_page():
html = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">\
<head>{% assets "css_assets" %}\
<link rel="stylesheet" href="{{ ASSET_URL }}" type="text/css">\
{% endassets %}\
<title>Hello</title>\
</head>\
<h1>Hello World</h1>\
<p>Just a test of flask</p>'
return render_template_string(html), 200
if __name__ == '__main__':
flask_app.run(host='0.0.0.0', port=5000)
如果源 css/js 没有更改,请记住清除之前生成的文件,即删除输出文件和 .webassets-cache
文件夹。
1代码风格和格式约定除外!
关于python - Autoprefixer 过滤器在 Flask_Assets 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42281671/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!