在前端开发中,构建工具是一个非常重要的环节。其中,Metalsmith 是一款非常流行的静态站点构建工具,非常适合用于搭建各种静态站点。而在这个过程中,Metalsmith-json-schema 这个 npm 包是一个非常有用的辅助工具,可以帮助开发者在内容生成过程中,更好的进行数据验证和错误处理。
1. 安装 metalsmith-json-schema
在安装 Metalsmith 后,使用以下命令安装 metalsmith-json-schema:
npm install metalsmith-json-schema --save-dev
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:
{ "schema": "schema.json", "title": "这是一个示例" }
3.2 支持自定义规则
在 Metalsmith-json-schema 中,我们内置了一些常用的规则,例如 type、required、minLength、maxLength 等。但是有时候,开发者需要自定义规则来进行数据验证。此时,可以通过以下方法自定义规则:
-- -------------------- ---- ------- ----- -------------- - - ------- --------- ------------- - ------- - ------- -------- -- --------- - ------- -------- -- ------ - ------- -------- - -- ----------- -------- --------- ------- ----------------------- ----- - ----- ------ - - ------- --------- ------------- - --------- -------------- -- ----------- ---------- - ----- ---------------- - - - ------- ----------- ----------- ------- ------- -- - -- ------ - - -- ----- - ---- - ----- --- ---------- ---- -- ------- - --- ---- --------- ----------- - - - - ------------ ------- ----------------- ------------- ---------------- --展开代码
例如,在上述代码中,我们自定义了一个名为 checkAge
的验证器,用于检测 age 属性是否小于 0 或者大于 120。开发者可以根据自己的需要,定义任意数量的验证器。
3.3 报告错误
当数据验证失败时,Metalsmith-json-schema 提供了两种方式来报告错误:
- 抛出一个异常
- 将错误信息添加到文件对象上
开发者可以在配置时,选择其中一种方式报告错误。
jsonSchema({ schema, reportErrors: true, // 如果设置为 true,则会将错误信息添加到文件对象上 schemaFolder: './json-schemas' })
3.4 安静模式
当 Metalsmith-json-schema 验证失败时,默认情况下,会抛出异常并停止生成流程。但是有时候,开发者希望忽略这些错误,继续生成站点。此时,可以使用安静模式。
jsonSchema({ schema, quiet: true, // 如果设置为 true,则会忽略错误,继续生成站点 schemaFolder: './json-schemas' })
4. 示例代码
完整的 Metalsmith-json-schema 使用示例代码如下:
-- -------------------- ---- ------- ----- ---------- - --------------------- ----- ---------- - --------------------------------- ----- -------------- - - ------- --------- ------------- - ------- - ------- -------- -- --------- - ------- -------- -- ------ - ------- -------- - -- ----------- -------- --------- ------- ----------------------- ----- - ----- ------ - - ------- --------- ------------- - --------- -------------- -- ----------- ---------- - ----- ---------------- - - - ------- ----------- ----------- ------- ------- -- - -- ------ - - -- ----- - ---- - ----- --- ---------- ---- -- ------- - --- ---- --------- ----------- - - - - --------------------- ---------------- ---------------------- ----------------- ------- ----------------- ------------- ----- ------------- ---------------- --- -------------------- ------ - -- ----- ----- --- ----------------- ----- ----------- --展开代码
总结:Metalsmith-json-schema 是一个非常有用的 npm 包,可以帮助开发者在生成站点的过程中,进行更好的数据验证和错误处理。通过本文的介绍,相信大家对 Metalsmith-json-schema 的应用有了更深入的了解。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/158173