Aud*_*kas 55
可以使用Flask-Assets扩展(使用webassets库).以下是如何配置它以使用pyScss编译器(在Python中实现)用于SCSS:
from flask import Flask, render_template
from flask.ext.assets import Environment, Bundle
app = Flask(__name__)
assets = Environment(app)
assets.url = app.static_url_path
scss = Bundle('foo.scss', 'bar.scss', filters='pyscss', output='all.css')
assets.register('scss_all', scss)
Run Code Online (Sandbox Code Playgroud)
在模板中包括:
{% assets "scss_all" %}
<link rel=stylesheet type=text/css href="{{ ASSET_URL }}">
{% endassets %}
Run Code Online (Sandbox Code Playgroud)
SCSS文件也将在调试模式下编译.
pyScss只支持SCSS语法,但也有其他过滤器(sass
,scss
和compass
)使用原始的Ruby实现.
自2013年回答问题以来,有些事情发生了变化.
您不能在pyscss的同时安装scss,并期望pyscss过滤器在接受的答案中工作.
scss = Bundle('foo.scss', 'bar.scss', filters='pyscss', output='all.css')
Run Code Online (Sandbox Code Playgroud)
我收到的错误结束于:
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
Run Code Online (Sandbox Code Playgroud)
您必须删除scss(即pip uninstall scss
)并确保已安装pyscss(即pip install pyscss
).
另请注意,您必须设置一些环境变量才能使pyscss正常工作:
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)
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅pyscss过滤器上的文档:http://webassets.readthedocs.io/en/latest/builtin_filters.html#pyscss
我希望这能节省很多时间,因为我浪费了一整天的时间.
使用libsass 的简单单行解决方案。在您import sass
简单地使用带有 dirname 关键字参数的 compile 函数之后,如下所示:
sass.compile(dirname=('path/to/sass', 'path/to/css'))
Run Code Online (Sandbox Code Playgroud)
您还可以选择设置输出样式,例如:
sass.compile(dirname=('path/to/sass', 'path/to/css'), output_style='compressed')
Run Code Online (Sandbox Code Playgroud)
如果您想在每次编辑时观看文件或目录以进行自动编译,请使用boussole。