我正在尝试使用metalsmith-in-place对我的源目录的子目录中的文件进行一些就地模板化。它不起作用。模板标签不会被前线替换。
我的构建脚本:
var Metalsmith = require('metalsmith'),
inplace = require('metalsmith-in-place'),
nunjucks = require('nunjucks');
Metalsmith(__dirname)
.source('./source')
.use(inplace({
engine: 'nunjucks',
pattern: '*.html',
directory: 'source/deeper'
}))
.destination('./build')
.build(function(err) {
if (err) {
console.log(err);
}
else {
console.info('Built it.');
}
});
我的模板:
metalsmith_debug$ cat source/deeper/index.html
---
title: My pets
---
{{title}}
我的输出:
metalsmith_debug$ cat build/deeper/index.html
{{title}}
适用于source
中的文件;但我需要它来处理子目录。
答案 0 :(得分:3)
一些变化:
build.js
:
var Metalsmith = require('metalsmith');
var inplace = require('metalsmith-in-place');
// var nunjucks = require('nunjucks');
Metalsmith(__dirname)
.source('./source')
.use(inplace({
engine: 'nunjucks',
pattern: '**/*.html' // modified pattern
// directory: 'source/deeper' // Not needed
}))
.destination('./build')
.build(function(err) {
if (err) {
console.log(err);
}
else {
console.info('Built it.');
}
});
metalsmith-in-place
使用consolidate
,这将在必要时需要它。 (可以删除行)pattern
内的inplace
修改为**/*.html
。有关详细信息,请参阅Globbing patterns。directory
内不需要inplace
。 (可以删除行) ...以及对source/deeper/index.html
的轻微更改:
---
title: My pets
---
{{ title }}
{{ title }}
- Nunjucks似乎认为这很重要。现在应该为你工作,如果没有,请告诉我。
答案 1 :(得分:3)
接受的答案现已过时,因为metalsmith-in-place
已切换为使用jstransformer框架而非consolidate
。
我写了一篇关于如何使用in-place
插件将Nunjucks与Metalsmith配对的文章:
这是缩小的工作示例:
const Metalsmith = require('metalsmith');
const inPlace = require('metalsmith-in-place');
Metalsmith(__dirname)
.source('./src')
.destination('./build')
.use(inPlace({
pattern: '**/*.njk',
engineOptions: {
path: __dirname + '/src'
}
}))
.build(function (error) {
if (error) {
throw error;
}
})
;
答案 2 :(得分:1)
pattern
配置中的inplace
最有可能是**/*.html
,而不仅仅是*.html