使用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的DEBUGTrueFalse,则默认为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压缩器提供一个过滤模块 直接地,避免了调用外部可执行文件进行编译的开销。

作者

马特·韦斯科特matthew.westcott@torchbox.com

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java无法从spring resttemplate访问sms网关   使用spark上下文方法参数的java并行化集合不正确   java中ReadLock的并发检查副本   java基于属性比较两个列表是否具有相同的元素   字符串Java文本块:缩进前缀中的制表符和空格的混合   java如何将带有@SpringBootApplication的maven模块作为测试范围中的依赖项添加到另一个maven模块   我需要一些关于在Java中使用2个jar文件的帮助   mysql JPA Java Spring Boot执行查找/连接表   java对话框选择具有特定名称的文件   java如何修复Spring工具套件4中的端口8080错误?   Java中的apache poi Excel阅读器   java如何在tomcat访问日志中记录线程上下文值   java有一种方法可以创建类<T>的实例,该类将类作为传递泛型的构造函数中的参数   默认情况下,java GORM onetomany映射执行即时抓取   java不能在安卓中接受全局变量   统计系统的java MongoDB异步驱动程序排名   java如何解析:无法解析插件“org.springframework.ide.eclipse.ui”?   用Java从一副牌中随机抽取5张牌   javaapachecamel动态消费者   java如何克服使用Flood Fill 4算法时的“薄边界”问题?