我尝试使用一些插件为 Metalsmith 制作一个样板,但我无法使 Metalsmith-layouts 和 Metalsmith-in-place 一起工作。我尝试了很多东西,并且成功地使其中之一起作用,但从未使用模板引擎(例如 Handlebars )使第二个起作用。 看起来 Metalsmith-layouts 不想读取 .hbs 中的文件。
我已经正确安装了 Handlebars 和 jstransform-handlebars(并且 .hbs 文件已通过 Metalsmith-in-place 正确转换,但无法使其与 Metalsmith 布局一起使用......这真的很烦人)。
我的目标是使用一个布局文件,其中的内容将使用诸如 Handlebars 之类的模板引擎呈现。
这是我的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));
这是我的目录:
最佳答案
我最终得出的结论是布局文件必须是 .html 文件。其html文件的内容由指定的引擎处理
.use(layouts({
engine: handlebars
}))
尽管该文件不是这种格式的 .hbs 文件,但这很令人困惑。就地插件对于将模板引擎用于内容页面非常有用。
关于javascript - 无法进行金属匠布局和金属匠就位工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47632745/