npm 包 metalsmith-json-schema 使用教程

阅读时长 8 分钟读完

在前端开发中,构建工具是一个非常重要的环节。其中,Metalsmith 是一款非常流行的静态站点构建工具,非常适合用于搭建各种静态站点。而在这个过程中,Metalsmith-json-schema 这个 npm 包是一个非常有用的辅助工具,可以帮助开发者在内容生成过程中,更好的进行数据验证和错误处理。

1. 安装 metalsmith-json-schema

在安装 Metalsmith 后,使用以下命令安装 metalsmith-json-schema:

2. 使用 metalsmith-json-schema

首先,我们需要在项目目录下创建一个文件夹,用来存放项目的 json 文件。然后,在每个 json 文件的开头加上以下的 schema 属性,即可进行数据验证。

-- -------------------- ---- -------
-
  --------- -
    ------- ---------
    ------------- -
        -------- - ------- -------- --
        -------------- - ------- -------- --
        ---------- - ------- -------- -
    --
    ----------- --------- -------------- ----------
  --
  -------- --------
-
展开代码

如上例,我们先定义了一个对象,里面包含了 title、description 和 content 三个属性,并且声明在 json 文件中这三个属性是必须的。然后指定了一个 title,用于在输出时指定文件名称。

接下来,我们需要在 Metalsmith 中配置 Metalsmith-json-schema。在 Metalsmith 插件列表中,添加以下代码:

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

---------------------
    ----------------
    ----------------------
    -----------------
        ------------- ----------------
    ---
    -------------------- ------ -
        -- ----- ----- ----
    ---
展开代码

上述代码首先引入了我们需要使用的两个包,然后配置 Metalsmith 的 source 和 destination,用于指定输入输出路径。接着使用 .use() 方法将 Metalsmith-json-schema 加入到插件列表中,指定 schemaFolder 为 json 数据的存储路径。最后调用 .build() 方法即可生成静态站点。

3. metalsmith-json-schema 的高级用法

Metalsmith-json-schema 的高级用法可以帮助开发者在生成站点过程中,进行更加复杂的数据验证和错误处理。下面,我们就来介绍这些高级用法。

3.1 指定所有文件共用一个 schema

在目录中指定 schema.json 文件,即可让所有的 json 文件共用同一个 schema 信息。例如,我们可以在文件夹中增加以下文件:

-- -------------------- ---- -------
-
    ------- ---------
    ------------- -
        -------- - ------- -------- --
        -------------- - ------- -------- --
        ---------- - ------- -------- -
    --
    ----------- --------- -------------- ----------
-
展开代码

此时,在每个 json 文件的开头,可以使用以下的方式引用 schema:

3.2 支持自定义规则

在 Metalsmith-json-schema 中,我们内置了一些常用的规则,例如 type、required、minLength、maxLength 等。但是有时候,开发者需要自定义规则来进行数据验证。此时,可以通过以下方法自定义规则:

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

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

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

------------
    -------
    -----------------
    ------------- ----------------
--
展开代码

例如,在上述代码中,我们自定义了一个名为 checkAge 的验证器,用于检测 age 属性是否小于 0 或者大于 120。开发者可以根据自己的需要,定义任意数量的验证器。

3.3 报告错误

当数据验证失败时,Metalsmith-json-schema 提供了两种方式来报告错误:

  • 抛出一个异常
  • 将错误信息添加到文件对象上

开发者可以在配置时,选择其中一种方式报告错误。

3.4 安静模式

当 Metalsmith-json-schema 验证失败时,默认情况下,会抛出异常并停止生成流程。但是有时候,开发者希望忽略这些错误,继续生成站点。此时,可以使用安静模式。

4. 示例代码

完整的 Metalsmith-json-schema 使用示例代码如下:

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

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

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

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

---------------------
    ----------------
    ----------------------
    -----------------
        -------
        -----------------
        ------------- -----
        ------------- ----------------
    ---
    -------------------- ------ -
        -- ----- ----- ---
        ----------------- ----- -----------
    --
展开代码

总结:Metalsmith-json-schema 是一个非常有用的 npm 包,可以帮助开发者在生成站点的过程中,进行更好的数据验证和错误处理。通过本文的介绍,相信大家对 Metalsmith-json-schema 的应用有了更深入的了解。

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