我尝试按照Flask_Assets 文档中的说明让 autoprefixer 过滤器与 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 构建的。
一个 SO 帖子声称已经找到了一种使配置设置起作用的方法,但该帖子没有显示如何设置 flask_assets 以获取这些选项的整个工作流程。
也许有人可以帮助我理解我做错了什么?