sass处理器,用于在渲染或脱机时将scss文件编译为*.css。

django-sass-processor的Python项目详细描述


django sass处理器

在开发django项目时不得不运行一个compass、grunt或gulp守护进程,对此感到恼火吗?

好吧,那么这个应用程序是给你的!在不需要管理的情况下动态编译sass/scss文件 第三方服务或特殊IDE插件。

使用此库的其他正当理由

  • 直接从源文件引用sass/scss文件,而不是引用编译的css文件, 必须依赖另一个从sass/scss文件创建它们的实用程序,隐藏在 您的源代码树。
  • 使用django的settings.py配置路径、框大小等,而不是使用另一个 特定于SCSS的文件(通常是\u variables.scss),用于保存这些文件。
  • 通过直接从django项目中调用python函数来扩展sass函数。
  • 在Django开发服务器的调试控制台中直接查看SCSS错误。

构建状态pypipypi versionpypitwitter follow

django sass处理器在渲染时将*.scss*.sass文件转换为*.css。 模板。由于性能原因,此操作只执行一次,因为预处理器会跟踪 如果任何导入的sass/scss文件小于 相应生成的css文件。

简介

此django应用程序提供了一个模板标记{%sass_src'path/to/file.scss'%},可以使用 而不是内置的templateTagstatic。此templateTag也适用于Jinja2模板。

如果sass/scss文件应通过media类或media属性引用,则sass 处理器可以直接使用。

此外,django sass处理器附带了一个管理命令,该命令可以转换 在templateTagsass\u src中作为脱机操作出现的所有事件的内容。因此 在生产环境中不需要libsass编译器。

在开发过程中,a源映射 与编译的*.css文件一起生成。这允许调试样式表错误 更容易。

使用这个工具,您可以安全地从django中删除ruby安装"compass"和"sass" 项目。您不需要任何基于node.js的目录"监视"守护进程。

项目所在地

在GitHub上:

https://github.com/jrief/django-sass处理器

请使用问题跟踪程序报告错误或建议新功能。

安装

pip install libsass django-compressor django-sass-processor

django compressor仅在脱机编译时才需要 manage.py compilesss

libsass如果sass/scss文件已预编译,则在生产环境中不需要 并使用脱机编译进行部署。

配置

settings.py中添加到:

INSTALLED_APPS=['sass_processor',]

django sass处理器附带一个特殊的查找程序,用于定位生成的*.css文件 在sass_processor_root引用的目录中(或者,如果未设置static_root)。把它加到 您的设置.py。如果在设置中没有静态文件查找器,请不要忘记 要包含默认查找器,请执行以下操作:django

如果sass_processor_root引用的目录不存在,则django sass processor 创造它。如果未设置sass_processor_root,因此默认为 静态根目录。因此,最好使用sass_processor_root=static_rootsettings.py中

STATICFILES_FINDERS=['django.contrib.staticfiles.finders.FileSystemFinder','django.contrib.staticfiles.finders.AppDirectoriesFinder','sass_processor.finders.CssFinder',]

或者,添加附加搜索路径的列表,sass编译器可以在使用 @import"…";sass/scss文件中的语句:

importosSASS_PROCESSOR_INCLUDE_DIRS=[os.path.join(PROJECT_PATH,'extra-styles/scss'),os.path.join(PROJECT_PATH,'node_modules'),]

此外,django sass处理器将遍历所有已安装的django应用程序(已安装的应用程序) 看看他们的静态文件夹。如果其中任何一个包含与正则表达式匹配的文件 模式^.+\(scss sass)$(读:文件名以下划线开头,类型为scsssass),然后将特定于应用程序的静态文件夹添加到包含目录中。这个 可以使用以下命令在您的设置中禁用功能:

SASS_PROCESSOR_AUTO_INCLUDE=False

如果在sass/scss文件中,还需要导入(使用@import"path/to/scssfile";) 不以下划线开头的文件,则可以在 设置,例如:

SASS_PROCESSOR_INCLUDE_FILE_PATTERN=r'^.+\.scss$'

将查找scss类型的所有文件。记住,sass/scss文件以 下划线,打算由其他sass/scss文件导入,而以 字母或数字将包含在HTML标记中 <;link href="{%sass\u src'path/to/file.scss%}"…>;

在开发过程中,或者当sass_processor_enabled=true时,编译后的文件被放入 由sass_processor_root引用的文件夹(如果未设置,则此设置默认为static_root)。 在工作目录之外有一个位置可以防止污染您的本地static/css/… 包含自动生成文件的目录。因此,请确保此目录可由 django运行服务器。

settings.py中微调sass编译器参数

integersass_precision设置输出css的浮点精度。利巴斯 默认值为5。注意:引导sass需要8,否则各种 布局问题会发生。

SASS_PRECISION=8

sass_output_style设置编译结果的编码样式,其中之一是compact压缩的扩展的嵌套的。默认值为nestedfordebug 以及在生产中压缩的。

注意:libsass python0.8.3编码resu有问题一边保存 Windows,问题已经存在 已修复,并将包含在将来的pip包发布中,同时 避免压缩输出样式。

SASS_OUTPUT_STYLE='compact'

Jinja2支持

sass_processor.jinja2.ext.sassrc是jinja2的扩展。将其添加到jinja2环境中以启用标记sass_src,不需要load标记。如何将jinja2环境添加到django的示例:

settings.py中:

TEMPLATES=[{'BACKEND':'django.template.backends.jinja2.Jinja2','DIRS':[],'APP_DIRS':True,'OPTIONS':{'environment':'yourapp.jinja2.environment'},}]

如果还在其他地方使用django模板,请确保添加默认的模板后端。 这在升级模板文档中有介绍。

yourApp/jinja2.py中:

pip install libsass django-compressor django-sass-processor
0

如果要使用compilesss命令,则还必须将以下内容添加到设置中:

pip install libsass django-compressor django-sass-processor
1

用法

在您的django模板中

pip install libsass django-compressor django-sass-processor
2

上述模板代码将呈现为html

pip install libsass django-compressor django-sass-processor
3

您可以在asekizai中安全地使用此模板标记 {%addtoblock"css"%}语句。

在媒体类或属性中

在python代码中,可以直接访问sass处理器的api。例如,这是有用的 在Django的管理或表单框架中。

pip install libsass django-compressor django-sass-processor
4

使用https://caniuse.com/

中的值将供应商前缀添加到css规则中

编写SCS应快速简便,您不必担心是否添加特定于供应商的 css指令的前缀。不幸的是没有纯python包来解决这个问题,但是 通过几个节点模块,我们可以将其添加到流程链中。

作为超级用户安装

pip install libsass django-compressor django-sass-processor
5

在项目根目录中,安装

pip install libsass django-compressor django-sass-processor
6

检查节点模块的路径是否与其在设置指令中的条目相对应 静态文件目录(见下文)。

如果在系统路径中找不到npx,请使用settings指令 节点npx路径=/path/to/npx指向可执行文件。

如果一切设置正确,django sass processor将所有必需的供应商前缀添加到 编译的css文件。有关更多信息,请参阅 autoprefixer包。

要禁用自动刷新,请设置node\u npx\u path=none

重要提示:如果安装了npx,但缺少postcss和/或autoprefixer。 在本地节点模块中,将节点路径设置为"无"是可以管理的,否则 django sass处理器不知道如何对生成的css文件进行后处理。

脱机编译

如果要为整个项目预编译所有sass/scss文件,请在 命令行调用:

pip install libsass django-compressor django-sass-processor
7

这对于准备sass/scss文件无法在其上编译的生产环境非常有用。 苍蝇,

为了简化部署,编译后的*.css文件与 相应的sass/scss文件。编译文件后运行

pip install libsass django-compressor django-sass-processor
8

就像在正常部署中一样。

如果您不想在生产环境中公开sass/scss文件, 部署时使用:

pip install libsass django-compressor django-sass-processor
9

要清除本地静态目录中已编译的*.css文件,只需将 以上命令:

INSTALLED_APPS=['sass_processor',]
0

这将删除所有以前生成的*.css文件。

或者您可以将结果编译到sass\u处理器根目录(如果未指定-to 静态根目录):

INSTALLED_APPS=['sass_processor',]
1

--删除文件结合ode>切换到清除结果。

如果使用替代模板引擎,请在--engine参数中设置其名称。目前 djangojinja2受支持,请参见 关于如何 设置压缩jinja2获取环境以配置jinja2引擎支持。

脱机编译期间,django sass processor分析所有python文件并查找 调用sass_处理器('path/to/sassfile.scss')。因此,字符串指定 文件名必须是硬编码的,不能串接或以某种方式生成。

替代模板

默认情况下,django sass processor将从.html模板中找到sass/scss文件, 但您可以在设置中使用:

INSTALLED_APPS=['sass_processor',]
2

通过settings.py配置sass变量

在sass中,一个棘手的问题是为图标和字体设置正确的包含路径。通常这是 通过\u variables.scss文件完成,但这会阻止通过项目进行配置 settings.py

为了避免重复的配置设置,django sass processor提供了一个sass 函数从项目的settings.py获取任意配置指令。这个 特别方便设置字形图标字体目录的包含路径。假设,引导sass 已使用安装:

INSTALLED_APPS=['sass_processor',]
3

然后找到名为node_modules的目录并将其添加到您的设置中,以便您的字体 可通过django的django.contrib.staticfiles.finders.filesystemfinder访问

INSTALLED_APPS=['sass_processor',]
4

使用sass函数get setting,可以用一个值覆盖任何sass变量 在项目的settings.py中配置。对于字形图标字体搜索路径,将此添加到 变量.scss

INSTALLED_APPS=['sass_processor',]
5

以及@import"variables";只要您需要glyphicons。然后可以安全地删除任何字体 引用,例如<;link href="/path/to/your/fonts/bootstrap/glyphicons whatever.ttf"…>; 从您的HTML模板。

通过python函数配置sass变量

甚至可以从任何模块内部调用python函数。通过添加 sass_processor_custom_函数到项目的settings.py。这应该包含一个映射 指向python函数名的sass函数名。

示例:

INSTALLED_APPS=['sass_processor',]
6

这允许从任何*.scss文件中调用python函数。

INSTALLED_APPS=['sass_processor',]
7

在这里,我们将参数'250、10、120'传递到函数def get\u color(红色、绿色、蓝色) 在python模块中myproject.utils。注意,此函数接收的值为sass.number, 因此,使用red.value等提取值。

如果其中一个自定义函数返回一个不是字符串的值,则转换它 要么指向python字符串,要么指向类型为sass.sassumber的值。对于其他类型,请参阅 文档。

这些自定义函数必须明确接受参数,否则sass_processor不接受 知道如何绘制地图。因此,不能使用变量参数列表。

用s3提供静态文件

如果您的部署服务于s3之外的css文件,则会提供一个自定义存储类。必须安装Boto 3。要使用它,请将其添加到您的设置文件中:

INSTALLED_APPS=['sass_processor',]
8

开发

要在本地运行测试,请克隆存储库,创建一个新的virtualenv,激活它,然后运行 这些命令:

INSTALLED_APPS=['sass_processor',]
9

更改日志

  • 0.7.3
  • 在管理命令compilesss中,还捕获解析fil的indentionerrorE.
  • 0.7.2
  • 使用autoprefixer时防止内容为空。

  • 源映射现在正在使用相对路径。这将修复Windows平台上的路径命名问题。

  • 0.7.1
  • 源映射现在正在使用相对路径。这将修复Windows平台上的路径命名问题。
    0.7
  • 允许直接调用python函数。
    0.6
  • 通过外部邮政添加自动刷新。
  • 0.5.8
  • 潜在的中断:libsass不再作为依赖项自动安装。
  • 添加对django-2.0的支持。
  • 0.5.7
  • 修复:如果未安装s3boto,则捕获异常。
  • 0.5.6
  • 添加了兼容层,可用于AWS S3存储。
  • 0.5.5
  • 如果目录不存在,则创建目录sass_processor_root
  • 0.5.4
  • 在项目中增加了单元测试和持续集成。
  • 0.5.3
  • 修复了compilesss:在dict、list或tuple中未找到sass_处理器的调用
  • 0.5.2
  • 修正了python 3的不兼容性。将文件作为二进制文件打开,因为它们可能包含Unicode字符。
  • 0.5.1
  • 将apps include目录添加到sass include路径。
  • 0.5.0
  • sass/scss文件也可以在纯python文件中引用,例如在media类或 媒体属性定义。
  • sass处理器将寻找潜在的include目录,以便@import"…" 声明也适用于其他django应用程序中的sass文件。
  • 0.4.0-0.4.4
  • 将sass处理器重构为一个独立的类sass processor,该类可以访问 通过api、jinja2模板引擎和现有的templatetag。
  • 0.3.5
  • 添加了jinja2支持,请参见jinja2支持。
  • 0.3.4
  • 修正了:django-1.9中的get_template_sources()返回对象而不是字符串。
  • 在命令中,使用ArgumentParser而不是OptionParser
  • 0.3.1…0.3.3
  • setup.py中更改了生成过程
  • 0.3.0
  • 与Django 1.8+兼容。
  • bootstrap3 sass ready:可以在settings.py中设置适当的浮点精度(8)。
  • 脱机编译结果可以选择性地存储在sass\u处理器根目录中
  • 0.2.6
  • hotfix:将sass函数get setting也添加到脱机编译器中。
  • 0.2.5
  • 与python3兼容
  • sorteddict替换为orderedict为django-1.9准备
  • 如果sass@include"…"找不到文件,则引发模板语法错误。
  • 添加了sass函数get settingsettings.py
  • 0.2.4
  • 强制将已编译的Unicode转换为字节,因为"Font Awesome"使用Unicode专用区域(PUA) 因此,fh.write()上的隐式转换失败。
  • 0.2.3
  • 允许设置模板扩展和输出样式。
  • 通过请求查找虚拟模板,强制Django根据模板加载程序设置计算模板源加载程序。
  • 0.2.0
  • 删除了对django sekizai和django classy标记的依赖性。现在可以在中操作 独立模式。因此,该项目已重命名为django sass处理器
  • 0.1.0
  • 名为"django sekizai处理器"的初始修订版,基于sekizai的预处理器 模板标记{%addtoblock%}

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

推荐PyPI第三方库


热门话题
JAXB可以将ArrayList作为逗号分隔的值输出吗?   java使用bcel将一个内部类移动到另一个外部类   java无法识别Lucene MoreLikeThis中的错误   安卓如何在Frida中将动态类转换为json或java文件   java如何使用Struts2在blob类型的列中保存我的sql中的图像?   使用mavenreleaseplugin将java maven发布到nexus 3.0.1失败   java这是正确的方法吗?   Windows上的java Runner不工作   找不到java Hibernate+Spring xml映射   java如何访问WMI查询的数据(通过JNA)SAFEARRAY结果   java如何在本地导入库而不使用Maven中的Nexus?   java渐变本地项目依赖项   使用URLFetchService/URL Google appengine for java