使用libsass编译sass文件的django压缩器过滤器
django-libsass的Python项目详细描述
使用libsass编译sass文件的django压缩器过滤器。
安装
从设置为django-compressor的django项目开始:
pip install django-libsass
并将django_libsass.sasscompiler添加到压缩预编译器设置中:
COMPRESS_PRECOMPILERS = ( ('text/x-scss', 'django_libsass.SassCompiler'), )
现在可以在样式表中使用内容类型text/x-scss,并让它们 无缝编译成css:
{% compress css %} <link rel="stylesheet" type="text/x-scss" href="{% static "myapp/css/main.scss" %}" /> {% endcompress %}
进口
@import lines中的相对路径如下所示:
@import "../variables.scss";
此外,还参考了django的staticfiles\u finders设置,以及所有可能的位置 对于静态文件,本地文件系统包含在搜索路径中就这样 可以跨不同应用导入文件:
@import "myotherapp/css/widget.scss"
设置
以下设置可用于控制django libsass的行为:
- LIBSASS_SOURCE_COMMENTS-是否启用sass源注释(添加有关源行的注释)。如果django的DEBUG是True,False,则默认为True。
- LIBSASS_OUTPUT_STYLE-sass输出样式。选项是'nested'、'expanded'、'compact'和'compressed',尽管从libsass 3.0.2开始,只实现了'nested'和'compressed'默认值为“嵌套”。见SASS documentation for output styles。注意django-compressor’s settings也可能影响结果CSS的格式
- LIBSASS_CUSTOM_FUNCTIONS-要在sass编译器中提供的自定义函数的映射。默认情况下,会提供一个static函数,类似于django的static模板标记。
- LIBSASS_SOURCEMAPS-启用将源映射嵌入到文件输出中。
- LIBSASS_PRECISION-数字精度位数(默认值:5)
自定义函数
sass编译器可以使用在LIBSASS_CUSTOM_FUNCTIONS设置中定义的自定义python函数进行扩展。默认情况下,会提供一个static函数,用于生成指向资源(如图像和字体)的静态路径:
.foo { background: url(static("myapp/image/bar.png")); }
如果STATIC_URL是'/static/',则将呈现为:
.foo { background: url("/static/myapp/image/bar.png")); }
为什么是Django Libsas?
我们希望在django项目中使用sass,而不引入任何外部(不可安装pip) 依赖关系。(实际上,我们想少用,但同样的论点也适用……)有一些 Sass和Less的纯Python实现,但是我们发现它们总是不匹配 引用编译器在处理@imports或较少使用的css时的行为 媒体查询等功能。
^ a4}是SAS引擎成熟的C/C++端口,由 Sass的原始创建者,我们可以合理地依赖它来与参考保持同步 SASS编译器-而且,作为C/C++,它很快。多亏了洪敏熙 libsass-python项目,它有python绑定和 直接从pip安装。
django libsass基于libsass python构建,使@import path知道django的静态文件 机制,并为使用libsass python API的django压缩器提供一个过滤模块 直接地,避免了调用外部可执行文件进行编译的开销。