3

Flask_Assets のドキュメントの指示に従って autoprefixer フィルターをフラスコ アセットで動作させようとしましたが、フィルターが適用されていないようです。これが私のコードです:

# 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 を実行しようとすると、プロセスはエラーをスローせず、コンパイルに必要な時間もかからないようです。出力ファイルは生成されますが、結果のファイルを調べると、プレフィックスは適用されていません。

更新:この問題は、ANY フィルターのオプションを構成しようとするたびに発生するようです。uglifyjs に「UGLIFYJS_EXTRA_ARGS」を受け入れさせることも、pyscss フィルターに「PYSCSS​​_STYLE」を使用して新しいスタイルを採用させることもできませんでした。これらの構成を os.environ['AUTOPREFIXER_BIN'] を使用して環境変数として設定しようとしただけでなく、flask.config['AUTOPREFIXER_BIN'] を介してそれらを渡そうとしました。ただし、フィルターの実行時に構成設定は適用されていません。また、コード自体のどこで構成オプションが Bundle または Environment によって構築されているかも明確ではありません。

SO の 1 つの投稿では、構成設定を機能させる方法を見つけたと主張していますが、この投稿には、これらのオプションを取り込むためにflask_assets をセットアップする必要があるワークフロー全体が示されていません。

おそらく、誰かが私が間違っていることを理解するのを手伝ってくれるでしょうか?

4

1 に答える 1