Metalsmith是一个流行的静态站点生成工具,是在前端开发过程中十分常用的工具之一。Metalsmith可以通过插件来完成各种自动化任务,但是有时候一个简单的配置就能够完成所需的功能,Metalsmith-Metaobject就是这样一个非常有用的插件,它可以让我们通过简单的一些配置来处理元数据,让我们的工具变得更加智能化。
安装
首先,我们需要在项目中安装Metalsmith及Metalsmith-Metaobject插件,使用命令npm install --save metalsmith metalsmith-metaobject
使用
Metalsmith-Metaobject插件的主要作用是处理元数据(metadata),下面我们将介绍如何使用Metalsmith-Metaobject插件的基本用法。
基本设置
如下所示,我们在项目的根目录下新建一个metalsmith.js
配置文件:
-- -------------------- ---- ------- ----- ---------- - ---------------------- ----- ---------- - --------------------------------- -- -- ---------- -- --------------------- ---------------- ----------------------- ------------------ -------------------- ------ - -- ----- - ----- ---- - ---
在metalsmith.js
文件中,我们首先通过require
语句引入Metalsmith和Metalsmith-Metaobject插件,然后通过Metalsmith构建对象并将其配置,最后使用use
方法引入Metalsmith-Metaobject插件并使用,在这个例子中Metalsmith-Metaobject会扫描每个markdown文件,将其元数据里的属性作为对象赋给file.meta
属性,好了,就是这么简单!
基本配置
我们可以在metalsmith.js文件中对Metalsmith-Metaobject进行简单的配置,下面是一个例子:
-- -------------------- ---- ------- --------------------- ---------------- ----------------------- ----------------- -- ---- -- -------- ------------ ------------ - ---------- - ------ ----- - - --- -------------------- ------ - -- ----- - ----- ---- - ---
在这个例子中,我们指定了通过"example"
元数据匹配到的文件需要添加一个foo
键来匹配"bar"
的值。注意到我们还指定了只有.md
后缀的文件会被Metalsmith-Metaobject插件处理,这就是通过pattern
参数配置的。
动态配置
在上述例子中,我们使用了元数据,让插件变得更加智能化,但是有些情况下,我们需要对其他数据进行操作,这就需要动态地指定函数来完成相关任务。
-- -------------------- ---- ------- --------------------- ---------------- ----------------------- ------------------------------- --------------- --------- - --- - ---------------- - ------------ --- -------------------- ------ - -- ----- - ----- ---- - ---
在上述例子中,通过传入一个函数回调,我们可以对将要处理的文件进行分析并添加特定的元数据。这意味着我们可以根据自己的需求使用动态的函数移除、修改或添加文件中的元数据来实现更自由的数据处理。
示例代码
最后,我们通过一个详细的代码示例来演示Metalsmith-Metaobject插件的使用:
目录结构
. ├── package.json ├── src │ ├── a.md │ └── b.md └── metalsmith.js
package.json
-- -------------------- ---- ------- - ------- ---------- ---------- -------- -------------- --- ---------- - -------- ----- -------------- -- --------- --- ---------- ------ --------------- - ------------- --------- ------------------------ --------- - -
metalsmith.js
-- -------------------- ---- ------- ----- ---------- - ---------------------- ----- ---------- - --------------------------------- --------------------- ---------------- ----------------------- ----------------- -------- ------------ ------------ - -- - --- ---- ------ ------ --- ------------ ----- -- - ----------- --- --- -- -- - --- ---- ------ ------ --- ------------ ----- -- - ----------- --- --- - - --- ------------ -- - -- ----- - ----------------- - ---- - ----------------- ----- ------------ - ---
a.md
--- template: foo layout: mylayout --- This is a test file.
b.md
--- template: bar layout: anotherlayout --- This is another test file.
在这个示例中,Metalsmith-Metaobject插件将会扫描每个.md
文件,并针对每个文件的元数据,将其转换为一个MetaObject放入file.meta
属性中。我们在 "a"
文件指定添加三个键: "id"
, "title"
, "description"
, 同时在 "b"
文件指定相同的键。 这些键及其值将透明地添加到MetaObject中。
这样一来,我们就能在模板中自由地使用这些值,并在构建页面后存储渲染元数据的结果。代码片段中的 {{ meta.title }}
将会被替换成对应 markdown 文件中定义的元数据值,即「Title A」或「Title B」。
总结
本文介绍了如何使用 Metalsmith-Metaobject
插件对元数据进行处理,不仅让我们的编码工作更加轻松和高效,同时也能够让我们在构建过程中更好地统一和利用数据。当我们开始使用 Metalsmith-Metaobject
时,可以通过官方文档了解更多的选项和方法。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066f401d8e776d08040c6b