无法获得极其基本的metalmith安装来构建页面

时间:2015-05-05 21:20:20

标签: node.js metalsmith

Metalsmith将自己描绘成一个非常简单的静态站点生成器。我试图编写最基本的网站只是为了让自己熟悉软件的基础知识,但我似乎无法建立起来。这是我的文件夹结构:

|- build/
|- index.js
|- src/
    |-index.html
|- templates
    |-index.hbt

我的index.js文件:

var Metalsmith = require('metalsmith');

Metalsmith(__dirname)
    .destination('./build')
    .build();

我的index.html文件:

---
title: Home
template: index.hbt
---

我的index.hbt模板:

<!doctype html>
<html>
    <head>
        <title>FOO</title>
    </head>
    <body>
        something
    </body>
</html>

我的理解是build命令应该查看src目录并解析它找到的任何文件,并在顶部找到YAML内容。因此,它应该查看index.html,看看它使用templates/index.hbt模板呈现,并且基本上只需将文件移动到build/index.html。但是当我跑node index.js时,我什么都没得到。没有进度指示,没有&#34;完成你的东西!&#34;消息,只是一个闪烁的命令提示行。我的构建目录为空。显然有些东西正在破裂,但没有要检查的日志,也没有谷歌的状态消息。我究竟做错了什么?不应该在build目录中创建至少一个页面吗?

2 个答案:

答案 0 :(得分:2)

在所有地方的教程评论中找到答案:https://blog.robinthrift.com/2014/04/14/metalsmith-part-1-setting-up-the-forge/。它也在github示例中:https://github.com/segmentio/metalsmith

根据这些链接,您需要在.build()函数中包含错误回调:

Metalsmith(__dirname)
    .build(function(err) {
        if (err) throw err;
    });

答案 1 :(得分:1)

除了您已经识别的错误回调问题之外,我认为您在文件中遗漏了一些内容。诚然,Metalsmith非常简单,但它的简单性意味着许多功能(如模板支持)是由您需要安装和明确包含的模块带来的。

您说Calculate().Subscribe(resultWithProgress => { if(resultWithProgress.Result == null) //Show progress using resultWithProgress.Progress else // get the result }) 文件的内容是:

index.js

你所拥有的一切var Metalsmith = require('metalsmith'); Metalsmith(__dirname) .destination('./build') .build(); ?如果您想使用Handlebars模板,则需要明确添加metalsmith plugin that handles templates,并指示它使用把手:

index.js

确保从npm安装var Metalsmith = require('metalsmith'); var templates = require('metalsmith-templates'); Metalsmith(__dirname) .destination('./build') .use(templates('handlebars')) .build(); metalsmith-templates模块。

此外,您可能知道这一点,但在您的handlebars中,您需要更改

index.hbt

    <title>FOO</title>

<title>{{ title }}</title> 加载标题元数据。

请告诉我这是否可以帮到您,或者您是否需要更多帮助。