无法制作金属布局和金属原位工作

时间:2017-12-04 11:50:59

标签: javascript node.js handlebars.js metalsmith

我尝试使用一些插件让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)); 

这是我的目录:

source file tree

1 个答案:

答案 0 :(得分:2)

我终于得出结论,布局文件必须是.html文件。其html文件的内容使用

中指定的引擎进行处理
.use(layouts({
    engine: handlebars
}))

尽管该文件不是这种格式的.hbs文件,但却非常令人困惑。就地插件对于内容页面使用模板引擎非常有用。