首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个金属匠-就地建造剧本有什么问题?

这个金属匠-就地建造剧本有什么问题?
EN

Stack Overflow用户
提问于 2016-04-07 23:06:26
回答 3查看 1.3K关注 0票数 3

我正在尝试使用现场金属匠在我的源dir的子目录中对文件做一些就地模板处理。它不起作用。模板标记不会被正面的内容所取代。

我的构建脚本:

代码语言:javascript
复制
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.');
    }
  });

我的模板:

代码语言:javascript
复制
metalsmith_debug$ cat source/deeper/index.html
---
title: My pets
---

{{title}}

我的产出:

代码语言:javascript
复制
metalsmith_debug$ cat build/deeper/index.html

{{title}}

它适用于source中的文件;但我需要它在子目录上工作。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-08 11:16:24

几项更改:build.js

代码语言:javascript
复制
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.');
    }
});
  1. 您不需要在构建文件中使用nunjucks,metalsmith-in-place使用consolidate,这需要在必要时使用。(行可移除)
  2. inplace中的inplace修改为**/*.html。有关更多信息,请参见球状图案
  3. directoryinplace中是不需要的。(行可移除)

..。以及对source/deeper/index.html的一个小改动

代码语言:javascript
复制
---
title: My pets
---

{{ title }}
  1. 在占位符{{ title }} - 恩朱克斯周围添加空间似乎认为这很重要。

现在应该为你工作,如果没有,请告诉我。

票数 3
EN

Stack Overflow用户

发布于 2017-11-18 12:40:52

接受的答案现在已经过时了,因为metalsmith-in-place转而使用jstransformer框架而不是consolidate

我写了一篇关于如何使用in-place插件将Nunjucks与Metalsmith配对的文章:

下面是一个缩小了的工作示例:

代码语言:javascript
复制
const Metalsmith = require('metalsmith');
const inPlace = require('metalsmith-in-place');

Metalsmith(__dirname)
  .source('./src')
  .destination('./build')
  .use(inPlace({
    pattern: '**/*.njk',
    engineOptions: {
      path: __dirname + '/src'
    }
  }))
  .build(function (error) {
    if (error) {
      throw error;
    }
  })
;
票数 3
EN

Stack Overflow用户

发布于 2016-04-08 00:20:00

您在inplace配置中的inplace很可能应该是**/*.html,而不仅仅是*.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36488739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档