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错误。
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上:
请使用问题跟踪程序报告错误或建议新功能。
安装
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_root
在settings.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)$(读:文件名以下划线开头,类型为scss
或
sass
),然后将特定于应用程序的静态文件夹添加到包含目录中。这个
可以使用以下命令在您的设置中禁用功能:
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
,
压缩的
、扩展的
或嵌套的
。默认值为nested
fordebug
以及在生产中压缩的。
注意: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
参数中设置其名称。目前
django
和jinja2
受支持,请参见
关于如何
设置压缩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
然后找到名为 使用sass函数 以及 甚至可以从任何模块内部调用python函数。通过添加
示例: 这允许从任何 在这里,我们将参数'250、10、120'传递到函数 如果其中一个自定义函数返回一个不是字符串的值,则转换它
要么指向python字符串,要么指向类型为 这些自定义函数必须明确接受参数,否则 如果您的部署服务于s3之外的css文件,则会提供一个自定义存储类。必须安装Boto 3。要使用它,请将其添加到您的设置文件中: 要在本地运行测试,请克隆存储库,创建一个新的virtualenv,激活它,然后运行
这些命令: 使用autoprefixer时防止内容为空。 源映射现在正在使用相对路径。这将修复Windows平台上的路径命名问题。node_modules
的目录并将其添加到您的设置中,以便您的字体
可通过django的django.contrib.staticfiles.finders.filesystemfinder访问
{%addtoblock%}INSTALLED_APPS=[…'sass_processor',…]
4
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变量
sass_processor_custom_函数
到项目的settings.py
。这应该包含一个映射
指向python函数名的sass函数名。INSTALLED_APPS=[…'sass_processor',…]
6
*.scss
文件中调用python函数。INSTALLED_APPS=[…'sass_processor',…]
7
def get\u color(红色、绿色、蓝色)
在python模块中myproject.utils
。注意,此函数接收的值为sass.number
,
因此,使用red.value
等提取值。sass.sassumber
的值。对于其他类型,请参阅
文档。sass_processor
不接受
知道如何绘制地图。因此,不能使用变量参数列表。用s3提供静态文件
INSTALLED_APPS=[…'sass_processor',…]
8
开发
INSTALLED_APPS=[…'sass_processor',…]
9
更改日志
libsass
不再作为依赖项自动安装。sass_processor_root
。media
类或
媒体
属性定义。@import"…"
声明也适用于其他django应用程序中的sass文件。sass processor
,该类可以访问
通过api、jinja2模板引擎和现有的templatetag。get_template_sources()
返回对象而不是字符串。ArgumentParser
而不是OptionParser
setup.py中更改了生成过程
settings.py
中设置适当的浮点精度(8)。
sass\u处理器根目录中
get setting
也添加到脱机编译器中。sorteddict
替换为orderedict
为django-1.9准备
@include"…"
找不到文件,则引发模板语法错误。
get setting
从settings.py
fh.write()
上的隐式转换失败。