删除 Jinja2 变量定义留下的空行

Remove the empty lines left by Jinja2 variable definitions

在为Saltstack使用Jinja2编写模板文件时,我经常在文件开头定义一些变量。例如:

{% set ip = grains['ip4_interfaces']['eth1'][0] %}
{% set domain = pillar['company_domain'] %}
{% set version = pillar['site_version'] %}
{% set site_url = 'www.' + domain %}

[...]

一切正常,但是当打开生成的文件时,我在 jinja 代码所在的位置看到了一段空行。

我是不是做错了什么? 如果没有,有没有办法在使用模板时摆脱那些空行?

Jinja2 中有whitespace control。你可能想要:

{%- set ip = grains['ip4_interfaces']['eth1'][0] -%}
{%- set domain = pillar['company_domain'] -%}
{%- set version = pillar['site_version'] -%}
{%- set site_url = 'www.' + domain -%}

[...]

还有盐 configuration file supports jinja_trim_blocks and jinja_lstrip_blocks (jinja_env:trim_blocks, jinja_env:lstrip_blocks, jinja_sls_env:trim_blocks, and jinja_sls_env:lstrip_blocks as of 2018.3).