我正在尝试使用就地金属匠对源目录的子目录中的文件进行就地模板化。没用模板标签不会被前题替换。

我的构建脚本:

var Metalsmith = require('metalsmith'),
  inplace = require('metalsmith-in-place'),
  nunjucks = require('nunjucks');

Metalsmith(__dirname)
  .source('./source')
  .use(inplace({
    engine: 'nunjucks',
    pattern: '*.html',
    directory: 'source/deeper'
  }))
  .destination('./build')
  .build(function(err) {
    if (err) {
      console.log(err);
    }
    else {
      console.info('Built it.');
    }
  });

我的模板:
metalsmith_debug$ cat source/deeper/index.html
---
title: My pets
---

{{title}}

我的输出:
metalsmith_debug$ cat build/deeper/index.html

{{title}}

它适用于source中的文件;但是我需要它来处理子目录。

最佳答案

进行一些更改:build.js:

var Metalsmith = require('metalsmith');
var inplace = require('metalsmith-in-place');
// var nunjucks = require('nunjucks');

Metalsmith(__dirname)
.source('./source')
.use(inplace({
    engine: 'nunjucks',
    pattern: '**/*.html' // modified pattern
    // directory: 'source/deeper' // Not needed
}))
.destination('./build')
.build(function(err) {
    if (err) {
        console.log(err);
    }
    else {
        console.info('Built it.');
    }
});
  • 您不需要在构建文件中要求nunjucks,metalsmith-in-place使用consolidate,这在需要时会需要它。 (行可以删除)
  • pattern中的inplace修改为**/*.html。有关更多信息,请参见Globbing patterns
  • directory中不需要
  • inplace。 (行可以删除)

  • ...以及对source/deeper/index.html的微小更改:
    ---
    title: My pets
    ---
    
    {{ title }}
    
  • 在占位符{{ title }}周围增加了空间-Nunjucks似乎认为这很重要。

  • 现在应该为您工作,如果不行,请通知我。

    关于nunjucks - 此“原位铁匠”构建脚本有什么问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36488739/

    10-09 21:12