npm 包 metalsmith-layouts-add-extension 使用教程

阅读时长 5 分钟读完

在前端开发中,Metalsmith 是一个强大的静态网站生成器,它是一个基于 Node.js 构建的工具,可以帮助开发者自动化完成构建、转换和优化网站的过程。Metalsmith 采用了类似于 Gulp 和 Grunt 的管道(Pipeline)方式,通过不同的插件来实现不同的功能。

Metalsmith-layouts 是 Metalsmith 的一个插件,可以帮助我们自动化渲染静态网站的布局。但是,这个插件有一个限制,就是只能支持 Handlebars、Mustache、Nunjucks 这三种模板引擎文件后缀名。如果你使用了其他的模板引擎,例如 Pug、EJS、Jade 等等,那么 Metalsmith-layouts 就无法正常工作了。

为了解决这个问题,我们可以使用另外一个 Metalsmith 插件:metalsmith-layouts-add-extension。这个插件可以让 Metalsmith-layouts 支持读取其他模板引擎的文件,例如 Pug、EJS、Jade 等等。

安装

在项目的根目录下执行以下命令来安装 metalsmith-layouts-add-extension:

使用

在 Metalsmith JavaScript 文件中,先引入插件:

然后,将 layoutsAddExtension 插件作为 layouts 插件的参数使用:

-- -------------------- ---- -------
---------------------
  --------------
    ------- ------
    ---------- ----------
    --------- -----------
    -------- -------------
  ----------------------------
    ------- ---
  ----
  ---------

在上面的代码中,我们指定了 Pug 作为模板引擎,engine 参数指定了 Pug 的变量名。如果你使用的是 EJS,那么将变量名指定为 ejs;如果是 Jade,则指定为 jade。然后,指定了 Pug 模板文件所在的目录、局部模板文件所在的目录、默认的页面布局文件,接着使用 layoutsAddExtension 插件,并将 Pug 引擎传递给它,就完成了对 Pug 的支持。

接下来,我们可以在 Pug 文件中使用 extends 指令来继承父布局文件,例如:

在上面的代码中,我们继承了 default.pug 文件,同时使用 block 块语句来定义了内容块。在父布局文件中,我们可以使用 block 块语句来引用这个内容块,例如:

在上面的代码中,我们使用 block 块语句来引用了 content 内容块。当 Metalsmith 运行时,会自动将子布局文件中的内容块插入到父布局文件中。

此外,如果你想要使用自己的模板引擎并支持 Metalsmith-layouts,请确保你的模板引擎符合标准的模板引擎语法。在 Metalsmith-layouts 插件中,使用了一个变量 locals 来存储传递给模板引擎的数据,你的自定义模板引擎需要支持该变量的使用。

示例

使用 Pug 模板引擎的示例:

-- -------------------- ---- -------
-- ---------
----- ---------- - ----------------------
----- ------- - ------------------------------
----- ------------------- - --------------------------------------------
----- --- - ---------------

-- -- ---------- -----
---------------------
  --------------
  ---------------------
  --------------
    ------- ------
    ---------- ----------
    --------- -----------
    -------- -------------
  ----------------------------
    ------- ---
  ----
  ------------ ------ -- -
    -- ----- -
      -------------------
    - ---- -
      ------------------ -------------
    -
  ---

在项目的 src 目录下,我们创建了多个 .pug 文件,例如 index.pugabout.pug 等等。这些 .pug 文件都继承了 default.pug 布局文件,在子文件中使用 block 块语句来定义自己的内容,例如:

default.pug 布局文件中,我们使用 block 块语句来引用了子文件中的 content 内容块。

build 目录下,我们可以看到生成了多个 HTML 文件,这些 HTML 文件就是由 Metalsmith 生成的静态网站。其中,每个 HTML 文件都应用了自己的布局文件,并将子文件中的内容块嵌入到父布局文件中,最终生成了完整的页面。

结论

Metalsmith-layouts 是一个强大的静态网站生成器,可以帮助我们自动化渲染静态网站的布局,但是它只支持 Handlebars、Mustache、Nunjucks 这三种模板引擎文件后缀名。为了使用其他的模板引擎,我们可以使用 metalsmith-layouts-add-extension 插件来扩展它的功能。这个插件可以让 Metalsmith-layouts 支持读取其他模板引擎的文件,非常方便。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005592381e8991b448d6976

纠错
反馈