2

いくつかのプラグインを使用して、metalsmith で定型文を作成しようとしていますが、metalsmith-layouts と metalsmith-in-place を連携させることはできません。私は多くのことを試しましたが、そのうちの 1 つを機能させることに成功しましたが、テンプレート エンジン (ハンドルバーなど) を使用して 2 つ目は機能しませんでした。metalsmith-layouts は .hbs のファイルを読みたくないようです。

ハンドルバーと jstransform-handlebars を適切にインストールしました (.hbs ファイルは、metalsmith-in-place によって適切に変換されますが、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)); 

そして、ここに私のディレクトリがあります:

ソースファイルツリー

4

1 に答える 1

2

最終的に、レイアウト ファイルは .html ファイルでなければならないという結論に達しました。その html ファイルのコンテンツは、

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

ファイルはこの形式の .hbs ファイルではないにもかかわらず、非常に紛らわしいです。インプレース プラグインは、コンテンツ ページにテンプレート エンジンを使用する場合に便利です。

于 2017-12-04T12:22:13.083 に答える