2017-12-04 15 views
0

私はいくつかのプラグインを使って金属メスとボイラープレートを作ろうとしますが、メタルミスレイアウトとmetalmith-in-placeの作業を一緒にすることはできません。私は多くのことを試してみましたが、そのうちの1つを動作させるのに成功しましたが、テンプレートエンジンを使って2番目のものは使用できませんでした(例えばハンドルバー)。 metalsmith-layoutsが.hbsのファイルを読みたくないようです。metalmith-layoutsとmetalsmith-in-placeの仕事をすることができません

ハンドルバーが正しくインストールされています。また、jsransform-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)); 

そして、ここでは私のディレクトリです:

source file tree

+0

'index'または' test-page'の内容は何ですか? –

+0

私はコンテンツがこの問題ではなく、レイアウトのコンテンツは{{title}} {{{contents}}}で、インデックスは次のとおりです。テストページ。 –

+0

実際、メタデータは違いを生む可能性があります。また、レイアウトなしでレイアウトを使用できるようです。 –

答えて

0

私は最終的にレイアウトファイルが.htmlのファイルでなければならないという結論に達しました。そのhtmlファイルの内容がファイルにもかかわらず、

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

で指定されたエンジンで処理されることは非常に混乱して、この形式で.hbsファイルではありません。インプレースプラグインは、コンテンツページのテンプレートエンジンを使用するのに便利です。