Files
form-render/docs/proptypes.md
2019-11-11 14:10:25 +08:00

3.5 KiB
Raw Blame History

proptypes-to-json-schema   npm

Githubproptypes-to-json-schema

将 React PropTypes 转换生成 JSON Schema,常用于 React 模块的可视化配置参数。

安装

npm i proptypes-to-json-schema -S

使用

const fs = require('fs');
const path = require('path');
const propToSchema = require('proptypes-to-json-schema');

// 参数为目标文件地址
const apiInfo = propToSchema(`${__dirname}/index.jsx`);
fs.writeFileSync(path.join(__dirname, 'schema.json'), JSON.stringify(apiInfo, null, 2));

propToSchema(path,options) 说明

名称 类型 默认值 备注
path string 必填 需要转换的jsx目录地址
options object {} 目前支持参数shouldAddUi,true会自动生成带 ui 配置的 schema

目前支持如下

类型 PropTypes prop schema type 默认 ui setting 可选 ui setting
布尔值 bool boolean checkbox
字符串 string string input[type=text] textarea、password、color、date、date-time、image
数字 number number input[type=text] updown(步进器搭配min、max、step使用)
单选项 oneOf enum select box
数组项 arrayOf array 组展示(*1) 同左
对象 shape object 对象展示(*2) 同左

*1: 子元素展示依赖于arrayOf的设置类似这样设置 PropTypes.arrayOf(PropTypes.xxx),其实xxx为前3种基本类型,不设置默认是字符串形式

*2: 目前对象形式必须通过 PropTypes.shape 来指明类型,目前不支持嵌套对象,只支持嵌套基础类型!

使用规范

  1. 只有添加了注释的属性,才会去提出对应信息

  2. 从 defaultProps 中获取默认值

  3. 从 propTypes 中获取属性类型转换成 schema 属性名

  4. 注释的填写规范

    • @title 参数的标题,对应 schema 中的 title 字段,用于可视化配置中的 label
    • @description 参数的描述,对应 schema 中的 title 字段 description 字段,用于可视化中的输入提示
    • @format 特殊类型(不必须),一般不填入,表单默认通过 input 进行输入,一般只有 string 类型才可以设置 format目前支持 format 字段如下可见上表
    • @pattern 正则校验表达式(不必须),主要用于字符串和数字类型的校验,假如长度限制不满足时候,可以使用和这个
    • @enumNames oneOf 场景中会渲染成一个选择的场景可以通过enumNames数组字段来描述里key对应的title
  5. 顶部可以设置 column 字段用来表示表单展示形式为 1 排 N

效果

React 输入标准Json schema 输出带 Ui 配置的 schema 输出

可以参考 Demo 中的使用

Changelog

0.1.0

  • [+] 第一个对外的版本,可用状态