Не могу сгенерировать файл 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, созданные для генерации вывода.