Using sass with Flask and jinja2

前端 未结 4 1623
我在风中等你
我在风中等你 2021-01-30 08:51

I would like to include a sass compiler in my Flask application. Is there a generally accepted way of doing this?

4条回答
  •  一生所求
    2021-01-30 09:05

    Some things have changed since the question was answered in 2013.

    You can't have scss installed at the same time as pyscss and expect the pyscss filter to work like in the accepted answer.

    scss = Bundle('foo.scss', 'bar.scss', filters='pyscss', output='all.css')
    

    I was getting an error that ended in:

    File "/home/sri/crap/example/flask/lib/python2.7/site-packages/webassets/filter/pyscss.py", line 110, in setup
    scss.config.STATIC_ROOT = self.static_root or self.ctx.directory
    

    You have to remove scss (i.e. pip uninstall scss) and be sure that pyscss is installed (i.e. pip install pyscss).

    Also note that you will have to set some environment variables in order to get pyscss to work as well:

    app = Flask(__name__)
    
    assets     = Environment(app)
    assets.url = app.static_url_path
    scss       = Bundle('index.scss', filters='pyscss', output='all.css')
    
    
    assets.config['SECRET_KEY'] = 'secret!'
    assets.config['PYSCSS_LOAD_PATHS'] = assets.load_path
    assets.config['PYSCSS_STATIC_URL'] = assets.url
    assets.config['PYSCSS_STATIC_ROOT'] = assets.directory
    assets.config['PYSCSS_ASSETS_URL'] = assets.url
    assets.config['PYSCSS_ASSETS_ROOT'] = assets.directory
    
    assets.register('scss_all', scss)
    

    see the documentation on the pyscss filter for more info: http://webassets.readthedocs.io/en/latest/builtin_filters.html#pyscss

    I hope that this save someone else a lot of time because I wasted a whole day on it.

提交回复
热议问题