@mrtian/form2yaml
TypeScript icon, indicating that this package has built-in type declarations

1.0.6 • Public • Published

Form2Yaml

  • 该包来自 form2yaml,我只是做了 js 转 ts, 并增加了类型定义。

实现 Form 表单和 YAML 数据的高效转换。

@mrtian/form2yaml

功能亮点

  • 保留 YAML 注释,结构与注释同步更新
  • 支持表单 key 与 YAML key 映射(keyMap)
  • 支持字段空值处理(emptyMode)
  • 支持 YAML 数据校验(validate)
  • 支持部分字段合并/忽略
  • 基于 js-yamllodashasync-validator 实现

目录


安装

npm install @mrtian/form2yaml

快速上手

构造 Form2Yaml 对象

import Form2Yaml from '@mrtian/form2yaml';
const yaml = `
meta:
  name: test  # 注释
  namespace: default
`;
const form2Yaml = new Form2Yaml(yaml);
console.log(form2Yaml.getJson());
// 输出:{ meta: { name: 'test', namespace: 'default' } }

keyMap 字段映射

const yaml = `
meta:
  name: test  # 注释
  namespace: default
`;
const form2Yaml = new Form2Yaml(yaml, {
  keyMap: { name: 'meta.name' }
});
console.log(form2Yaml.getJson()); // { name: 'test' }

获取全部数据

console.log(form2Yaml.getJson('all'));
// { name: 'test', meta: { namespace: 'default' } }

根据表单数据更新 YAML

const yaml = `
meta:
  name: test  # 注释
  namespace: default
`;
const form2Yaml = new Form2Yaml(yaml);
form2Yaml.setJson({ meta: { name: 'newName' } });
console.log(form2Yaml.getYaml());
// meta:
//   name: newName  # 注释
//   namespace: default

空值保留/删除

const yaml = `
meta:
  name: test  # 注释
  namespace: default
`;
const form2Yaml = new Form2Yaml(yaml, {
  emptyMode: { 'meta.namespace': 'retain' }
});
form2Yaml.setJson({ meta: { name: 'newName', namespace: undefined } });
console.log(form2Yaml.getYaml());
// meta:
//   name: newName  # 注释
//   namespace:

setYaml 用法

const yaml = `
meta:
  name: test  # 注释
  namespace: default
`;
const form2Yaml = new Form2Yaml(yaml);
const newYaml = `
meta:
  name: newName  # 注释
  namespace: default
`;
form2Yaml.setYaml(newYaml);

YAML 校验

const yaml = `
meta:
  name: test  # 注释
  age: NaN
`;
const form2Yaml = new Form2Yaml(yaml, {
  rules: { 'meta.age': [{ pattern: /^\d+$/, message: '年龄必须为数字' }] }
});
form2Yaml.validate().then(() => {
  console.log('校验通过');
}).catch(err => {
  console.log('校验失败', err);
});

编译与发布

npm run build   # TypeScript 编译
npm run publish # 发布到 npm

常见问题

  • Q: 如何保留 YAML 注释?
    • A: 本库自动保留注释,无需额外配置。
  • Q: 如何自定义字段映射?
    • A: 通过 options.keyMap 配置。
  • Q: 如何校验 YAML?
    • A: 通过 options.rules 配置校验规则,调用 validate 方法。

联系方式

如有问题或建议,欢迎提 issue 或联系作者邮箱:mrtian@foxmail.com

Package Sidebar

Install

npm i @mrtian/form2yaml

Weekly Downloads

1

Version

1.0.6

License

MIT

Unpacked Size

146 kB

Total Files

23

Last publish

Collaborators

  • undefind