Невозможно выполнить макеты слесаря ​​и слесаря ​​на месте.

Я пытаюсь сделать шаблон с кузнецом по металлу, используя некоторые плагины, но я не могу заставить работать макеты кузнеца и кузнеца на месте вместе. Я пробовал много вещей, и мне удалось заставить работать одну из них, но не вторую, используя механизм шаблонов (например, руль). Похоже, что metalsmith-layouts не хочет читать файлы в формате .hbs.

Я правильно установил руль и jstransform-handlebars (и файлы .hbs должным образом преобразуются с помощью мастера по металлу на месте, но не могут заставить его работать с макетами мастера по металлу ... И это действительно раздражает).

Моя цель — использовать файл макета, в котором содержимое будет отображаться с использованием механизма шаблонов, такого как 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)); 

И вот мой каталог:

дерево исходных файлов


person Sébastien Martin    schedule 04.12.2017    source источник
comment
Каково содержание index или test-page?   -  person James Khoury    schedule 05.12.2017
comment
Я не думаю, что контент играет роль в этой проблеме, но содержание макета просто: {{title}} {{{contents}}}, индекс: это домашняя страница, а тестовая страница: это тест страница.   -  person Sébastien Martin    schedule 06.12.2017
comment
На самом деле метаданные могут иметь значение. Также кажется, что вы можете просто использовать макеты без in-place.   -  person James Khoury    schedule 06.12.2017


Ответы (1)


В конце концов я пришел к выводу, что файл макета ДОЛЖЕН быть файлом .html. Содержимое его html-файла обрабатывается движком, указанным в

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

несмотря на то, что файл не является файлом .hbs в этом формате, что довольно запутанно. Плагин на месте полезен для использования механизма шаблонов для страниц содержимого.

person Sébastien Martin    schedule 04.12.2017