无法使用flask-assets从sass文件生成all.css文件

时间:2018-01-23 12:57:33

标签: flask sass flask-assets

我厌倦了在我的烧瓶应用程序中使用css,所以我决定使用烧瓶资产https://github.com/miracle2k/flask-assets移动到scss。 我在app.py文件中添加了这个:

from flask_assets import Environment, Bundle

assets = Environment(app)
assets.debug = True
assets.url = app.static_url_path
scss = Bundle('sass/foo.scss', 'sass/bar.scss', filters='pyscss', output='gen/all.css')
assets.register('scss_all', scss)

如果我理解正确,这些行应该检查我的static / sass文件夹并生成一个带有一个all.css缩小文件的gen文件夹吗? 我还在我的静态资源文件夹和foo.scss文件中创建了一个sass文件夹,里面有一些代码来测试它。 但是,当我启动应用程序时,没有生成任何内容,我没有得到任何错误。我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

以下是我如何使用它。

以下是我的项目目录在生成任何内容之前的屏幕截图:

enter image description here

接下来,我确保安装了以下内容:

  

pip install flask-assets

     

pip install pyscss(这是过滤器中的过滤器=' pyscss'部分)

以下是我设置代码的方法:

from flask import Flask, render_template
from flask_assets import Environment, Bundle

app = Flask(__name__)

assets = Environment(app)
assets.url = app.static_url_path
assets.debug = True

scss = Bundle('sass/foo.scss', 'sass/bar.scss', filters='pyscss', output='gen/all.css')
assets.register('scss_all', scss)


@app.route('/')
def hello_world():
    return render_template('index.html')


if __name__ == '__main__':
    app.run()

还有index.html:

{% assets "scss_all" %}
    <link rel="stylesheet" href="/static/gen/all.css">
{% endassets %}
<ul>
    <li>
        Test Flask Assets
    </li>
</ul>

现在,当我运行应用程序时,它花了一秒钟来生成css,但它确实生成了。一旦这样做,这是运行后的目录结构:

enter image description here

你可以在chrome调试器中看到它确实加载了:

enter image description here

请注意,配置文件gen中的文件夹必须为output='gen/all.css',否则无法正常工作。

修改 另外,根据@ David的评论,为了生成输出而创建了所有必需的scss文件,这一点非常重要。