Не могу сгенерировать файл all.css из sass-файлов с помощью flask-assets

Я устал от использования css в своем приложении для фляги, поэтому решил перейти на scss с активами фляги https://github.com/miracle2k/flask-assets. Я добавил это в мой файл 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 и сгенерировать папку gen с одним минимизированным файлом all.css, верно? Я также создал папку sass внутри своей папки статических ресурсов и файл foo.scss внутри нее с некоторым кодом для тестирования. Однако, когда я запускаю приложение, ничего не генерируется, и я не получаю ошибку. Что я здесь не так делаю?

1 ответ

Решение

Вот как я получил это на работу.

Вот снимок экрана моего каталога проекта, прежде чем он что-либо сгенерирует:

Затем я убедился, что у меня установлено следующее:

pip install flask-assets

pip install pyscss (это ваш фильтр в разделе filters='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, но оно сгенерировало. Как только это произойдет, вот структура каталогов после запуска:

И вы можете увидеть в отладчике Chrome, что он действительно загружается:

Важно отметить, что папка должна быть gen в конфигурации output='gen/all.css' иначе это не сработает.

РЕДАКТИРОВАТЬ Также в соответствии с комментарием @ Дэвида, важно, чтобы у вас были все необходимые файлы scss, созданные для генерации вывода.

Другие вопросы по тегам