我尝试使用一些插件让metalmith成为一个样板,但是我无法将metalsmith-layouts和metalsmith-in-in合作。我尝试了很多东西,我成功地使其中一个工作,但从来没有使用模板引擎(例如把手)。 似乎metalsmith-layouts不想读取.hbs中的文件。
我已经正确安装了把手和jstransform-handlebars(和.hbs文件可以通过metalsmith-in-situ正确转换,但不能使它与metalsmith布局一起使用......这真的很烦人。)
我的目标是使用一个布局文件,其中的内容将使用像把手一样的模板引擎进行渲染。
这是我的index.js代码:
const path = require('path');
const metalsmith = require('metalsmith');
const inPlace = require('metalsmith-in-place');
const layouts = require('metalsmith-layouts');
const assets = require('metalsmith-assets');
const sass = require('metalsmith-sass');
const htmlMinifier = require("metalsmith-html-minifier");
const permalinks = require('metalsmith-permalinks');
metalsmith(__dirname)
.source('src')
.destination('dist')
.use(sass({
file: './src/scss/*.scss',
outputDir: "css/"
}))
.use(inPlace()) //Template engine uses Handlebars
.use(layouts({
engine: 'handlebars',
default: "layout.html.hbs"
}))
.use(htmlMinifier())
.use(permalinks({
relative: false,
pattern: ':url'
}))
.use(assets({
source: 'assets'
}))
.build((err) => err && console.error(err));
这是我的目录:
答案 0 :(得分:2)
我终于得出结论,布局文件必须是.html文件。其html文件的内容使用
中指定的引擎进行处理.use(layouts({
engine: handlebars
}))
尽管该文件不是这种格式的.hbs文件,但却非常令人困惑。就地插件对于内容页面使用模板引擎非常有用。