跳转到主要内容

一个使用libsass编译SASS文件的django-compressor过滤器

项目描述

一个用于使用libsass编译Sass文件的django-compressor过滤器。

安装

从已设置django-compressor的Django项目开始

pip install django-libsass

并将django_libsass.SassCompiler添加到您的COMPRESS_PRECOMPILERS设置中

COMPRESS_PRECOMPILERS = (
    ('text/x-scss', 'django_libsass.SassCompiler'),
)

现在您可以在样式表中使用text/x-scss内容类型,并且它们可以无缝编译成CSS

{% load compress %}

{% compress css %}
    <link rel="stylesheet" type="text/x-scss" href="{% static "myapp/css/main.scss" %}" />
{% endcompress %}

导入

在@import行中的相对路径按预期跟随

@import "../variables.scss";

此外,还会咨询Django的STATICFILES_FINDERS设置,并将所有可能的本地文件系统上的静态文件位置包含在搜索路径中。这使得可以在不同的应用程序之间导入文件

@import "myotherapp/css/widget.scss"

设置

以下设置可用于控制 django-libsass 的行为

  • LIBSASS_SOURCE_COMMENTS - 是否启用 SASS 源代码注释(添加关于源代码行的注释)。当 Django 的 DEBUGTrue 时默认为 True,否则为 False

  • LIBSASS_OUTPUT_STYLE - SASS 输出样式。选项有 'nested''expanded''compact''compressed',尽管截至 libsass 3.0.2 版本,只有 'nested''compressed' 被实现。默认为 'nested'。请参阅 SASS 文档中的输出样式。注意,django-compressor 的设置 也可能影响最终 CSS 的格式。

  • LIBSASS_CUSTOM_FUNCTIONS - 将自定义函数映射到 SASS 编译器中。默认提供了一个 static 函数,类似于 Django 的 static 模板标签。

  • LIBSASS_SOURCEMAPS - 启用将 sourcemaps 嵌入文件输出(默认:False)

  • LIBSASS_PRECISION - 数值精度的数字位数(默认:5)

  • LIBSASS_ADDITIONAL_INCLUDE_PATHS - @import 行中要识别的基础路径列表,除了 Django 识别的静态文件位置外

自定义函数

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-libsass?

我们希望在 Django 项目中使用 Sass 而不引入任何外部(非 pip 安装)依赖项。(实际上,我们想使用 Less,但相同的论点同样适用……)有几个纯 Python 的 Sass 和 Less 实现,但我们发现它们在处理 @import 或不太常用的 CSS 功能(如媒体查询)方面,始终无法与参考编译器匹配。

libsass 是 Sass 引擎的成熟 C/C++ 版本,由 Sass 的原始创建者共同开发,我们可以合理地依赖它保持与参考 Sass 编译器的同步——并且,作为 C/C++,它很快。感谢 Hong Minhee 的 libsass-python 项目,它提供了 Python 绑定,并可以直接从 pip 安装。

django-libsass 基于 libsass-python 构建,使 @import 路径了解 Django 的 staticfiles 机制,并为 django-compressor 提供了一个直接使用 libsass-python API 的过滤器模块,从而避免了调用外部可执行文件进行编译的开销。

报告错误

请参阅 故障排除 页面以获取一些常见设置问题的帮助。

我不会提供支持以使 django-libsass 与您选择的 CSS 框架一起工作。如果您认为您已发现一个错误,请在报告之前尝试将其隔离为最小可重复测试用例——理想情况下,这将包括对 hello-django-libsass 示例项目的少量编辑/添加。如果您无法在几个独立的 SCSS 文件中演示问题,则几乎可以肯定这不是 django-libsass 的错误——任何与第三方 CSS 框架相关的错误报告都可能在没有进一步调查的情况下被关闭。

作者

Matt Westcott matthew.westcott@torchbox.com

项目详细信息


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

django-libsass-0.9.tar.gz (6.8 kB 查看散列值)

上传时间

构建分布

django_libsass-0.9-py3-none-any.whl (6.6 kB 查看散列值)

上传时间 Python 3

由以下机构支持