javascript - 无法进行金属匠布局和金属匠就位工作

标签 javascript node.js handlebars.js metalsmith

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

这是我的目录:

source file tree

最佳答案

我最终得出的结论是布局文件必须是 .html 文件。其html文件的内容由指定的引擎处理

.use(layouts({
    engine: handlebars
}))

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

关于javascript - 无法进行金属匠布局和金属匠就位工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47632745/

相关文章:

javascript - 单击转到带有 id 引用解决方案的动态 url

javascript - 如何将 javascript 重定向加载到 android webview 中?

javascript - JavaScript 控制台中的值与数组不同

javascript - Node js退出前的清理工作

javascript - handlebars js 将 map 打印为表格

JavaScript 同源策略 - 它如何应用于不同的子域?

node.js - node-rsa 和 openssl 兼容性

mysql - 有适合 Node.js 的 DAL 或 DAL/ORM 吗?

jquery - 根据用户角色隐藏带有 Handlebars 的元素

javascript - 使用helper 在handlebars.js 中创建链接