Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

jsonschema-converter-cli

JSON Schema (.json) から以下を生成する CLI です。

  • YAML
  • TypeScript 型定義
  • Zod スキーマコード
  • Pydantic v2 モデルコード
  • Markdown ドキュメント
  • HTML ドキュメント

CLI ファーストで、まずはコマンドとして安定して動くことを優先しています。

内部 $ref と外部 $ref を含む JSON Schema も、事前に参照解決してから TypeScript / Zod / Pydantic / Markdown / HTML 生成を行います。 入力はまず jq で JSON 構文を確認し、その後 Ajv で Draft 2020-12 の JSON Schema として妥当かを検証します。

セットアップ

Nix 開発環境に入り、依存を同期します。

nix develop
pnpm install
uv sync --group dev

使い方

生成される成果物:

  • <name>.yaml
  • <name>.types.ts
  • <name>.zod.ts
  • <name>.pydantic.py
  • <name>.md
  • <name>.html

全成果物を生成:

nix develop -c ./scripts/convert.sh test/fixtures/simple-object.schema.json --out-dir generated

明示的に一括生成モードを使う場合:

nix develop -c ./scripts/convert.sh schema.json --all --out-dir generated

個別生成:

nix develop -c ./scripts/convert.sh schema.json --yaml
nix develop -c ./scripts/convert.sh schema.json --types
nix develop -c ./scripts/convert.sh schema.json --zod
nix develop -c ./scripts/convert.sh schema.json --pydantic
nix develop -c ./scripts/convert.sh schema.json --markdown
nix develop -c ./scripts/convert.sh schema.json --html

テスト

実ファイルと実プロセスを使う受け入れテストです。

現在のテストでは以下を確認しています。

  • schema fixture 全件で YAML / TypeScript / Zod / Pydantic / Markdown / HTML を生成できる
  • 入力が JSON として不正なら早期に失敗する
  • 入力が JSON Schema として不正なら Ajv で早期に失敗する
  • YAML が再パース可能である
  • TypeScript / Zod 生成物が tsc --noEmit を通る
  • Pydantic 生成物が Python としてコンパイルできる
  • Markdown 生成物が基本的な Markdown 文書として出力される
  • HTML 生成物が基本的な HTML 文書として出力される
  • 13-ref 14-ref 15-ref fixture で $ref を含む生成物が any に落ちない
  • 13-ref 14-ref 15-ref fixture の valid / invalid example を Zod と Pydantic の生成物で検証できる
nix develop -c uv run pytest

採用ツール

  • YAML: PyYAML
  • TypeScript: json-schema-to-typescript
  • Zod: json-schema-to-zod
  • Pydantic: datamodel-code-generator
  • Markdown: json-schema-static-docs
  • HTML: json-schema-static-docs + Markdown to HTML 変換
  • 入力検証: Ajv

License

MIT License

Copyright (c) 2026 ks250206

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages