diff --git a/lib/plugins/renderer/nunjucks.js b/lib/plugins/renderer/nunjucks.js index d9be973933..f049114ef0 100644 --- a/lib/plugins/renderer/nunjucks.js +++ b/lib/plugins/renderer/nunjucks.js @@ -3,6 +3,7 @@ const nunjucks = require('nunjucks'); const fs = require('hexo-fs'); +const { dirname } = require('path'); function toArray(value) { if (Array.isArray(value)) { @@ -31,16 +32,16 @@ function safeJsonStringify(json, spacer = undefined) { return '""'; } -const env = nunjucks.configure({ - autoescape: false, - throwOnUndefined: false, - trimBlocks: false, - lstripBlocks: false -}); -env.addFilter('toArray', toArray); -env.addFilter('safeDump', safeJsonStringify); - function njkCompile(data) { + const env = nunjucks.configure(dirname(data.path), { + autoescape: false, + throwOnUndefined: false, + trimBlocks: false, + lstripBlocks: false + }); + env.addFilter('toArray', toArray); + env.addFilter('safeDump', safeJsonStringify); + return nunjucks.compile( 'text' in data ? data.text : fs.readFileSync(data.path), env,