Если я хочу упаковать файл шаблона nunjucks с модулем узла, как мне ссылаться на файл упакованного шаблона, чтобы он был универсально доступным, когда пакет установлен глобально?
У меня есть следующий файл узла, index.js
:
#!/usr/bin/env node
var nunjucks = require('nunjucks');
var env = nunjucks.configure('./');
var template = env.getTemplate('template.html');
var output = template.render({
h1_copy: "Foo and Bar"
});
console.log(output);
Вот шаблон. html:
<html>
<body>
<h1>{{ h1_copy }}</h1>
</body>
</html>
Я настроил его, чтобы в пакете была бинарная команда. json:
"bin": {
"make_output": "./index.js"
}
Теперь, если я установлю его глобально, я могу запустить make_output
для вывода:
node-nunjucks$ npm install -g .
/usr/local/bin/make_output -> /usr/local/lib/node_modules/node-nunjucks/index.js
+ node-nunjucks@1.0.0
added 1 package in 0.099s
node-nunjucks$ make_output
<html>
<body>
<h1>Foo and Bar</h1>
</body>
</html>
Но это работает, только если template.html
присутствует в каталоге, в котором я запускаю команда. Если я попытаюсь запустить глобальную команду из любого другого места, он не сможет найти шаблон:
node-nunjucks$ cd ..
tmp$ make_output
/private/tmp/node-nunjucks/node_modules/nunjucks/src/environment.js:296
throw err;
^
Error: template not found: template.html
Как мне сослаться на упакованный файл шаблона в index.js
, чтобы он использовал шаблон в пакете (тот, что находится на /usr/local/lib/node_modules/node-nunjucks/template.html
), а не искать шаблон в моем рабочем каталоге?