使用jinja2兼容模式预编译Nunjucks模板

Nunjucks拥有越来越强大的忍者兼容模式 。 如果我包括完整的nunjucks,我可以使用它在渲染模板之前调用nunjucks.installJinjaCompat() (请参阅下面的代码片断):

 nunjucks.installJinjaCompat(); var res = nunjucks.renderString( '{% for i in list[0:2] %}' + ' count: {{ i }}' + '{% endfor %}', {list: [1, 2, 3, 4]} ); document.write(res); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/nunjucks/3.0.1/nunjucks.min.js"></script> 

我不知道如何预编译相同的代码。 有文件list.njk

 {% for i in list[0:2] %} count: {{ i }} {% endfor %} 

我使用默认的nunjucks-precompile list.njk > list.js命令nunjucks-precompile list.njk > list.js ,但是它引发了:

 /usr/local/lib/node_modules/nunjucks/src/precompile.js:130 throw lib.prettifyError(name, false, err); ^ Template render error: (list.njk) [Line 1, Column 15] parseAggregate: expected comma after expression at Object.exports.prettifyError (/usr/local/lib/node_modules/nunjucks/src/lib.js:34:15) at _precompile (/usr/local/lib/node_modules/nunjucks/src/precompile.js:130:19) at precompile (/usr/local/lib/node_modules/nunjucks/src/precompile.js:79:27) at Object.<anonymous> (/usr/local/lib/node_modules/nunjucks/bin/precompile:62:13) at Module._compile (module.js:409:26) at Object.Module._extensions..js (module.js:416:10) at Module.load (module.js:343:32) at Function.Module._load (module.js:300:12) at Function.Module.runMain (module.js:441:10) at startup (node.js:139:18) 

错误,如果我使用arrays拼接这是忍者兼容性具体构造。 它编译,如果我删除[0:2]

我怎样才能预先编译模板采取jinja兼容模式?

我已经尝试在文档中find这个,nunjucks问题和检查nunjucks-precompile节点脚本为nunjucksvariables,所以我可以monkeypatch它包括nunjucks.installJinjaCompat()调用; 可悲的是它不在那里,它只使用Environment

它看起来像nunjucks-precompile没有一个开关可用于nunjucks.installJinjaCompat()但你可以很容易地添加它:

复制现有的CLI文件并对其进行修改以更正require源并安装compat层:

 cp node_modules/.bin/nunjucks-precompile . <edit nunjucks-precompile> ./nunjucks-precompile list.njk ... 

用nunjucks 3.0.1 ./nunjucks-precompile应该看起来像

 #!/usr/bin/env node var path = require('path'); var precompile = require('nunjucks/src/precompile').precompile; var Environment = require('nunjucks/src/environment').Environment; var lib = require('nunjucks/src/lib'); var nunjucks = require('nunjucks'); nunjucks.installJinjaCompat(); ... 

或者你可以从这里下载。