TOML → YAML

TOML ドキュメントを YAML に変換し、キーの並べ替えとインデントを選択できます。

TOML ドキュメントを YAML に変換し、キーの並べ替えとインデントを選択できます。 TOML ドキュメントを YAML に変換し、キーの並べ替えとインデントを選択できます。

出力

背景

なぜ TOML と YAML の間で変換するのか

両形式とも人間が編集する設定ファイルを狙っていますが、周囲のエコシステムは異なります。TOML は Python パッケージング(pyproject.toml)、Rust(Cargo.toml)、GitHub ワークフロー、多くの CLI ツールの標準です。YAML は Kubernetes、Ansible、Docker Compose、旧構文の GitHub Actions、多くの CI システムの標準です。

同じ設定を両方の形式で表現しなければならないことがあります。pyproject.toml のスニペットを Ansible playbook で再利用したり、Kubernetes ConfigMap を Cargo.toml の依存ブロックに転記したりする場合です。TOML→YAML 変換器は翻訳を機械的なものに保ちます。

変換で残るもの

マッピング、シーケンス、スカラ(文字列、整数、浮動小数点、真偽値、ISO 日付)、インラインテーブル、ドットキーはすべてきれいに変換されます。複数行文字列は YAML ブロックスカラとして出力され、元の TOML 作者が選んだ視覚的レイアウトが保たれます。

残らないもの

YAML タグ(!!str!!int など)は、基底の型が YAML のデフォルト推論と異なる場合にのみ出力されます。実際にはパーサの選択は多くの読み手の期待と一致します。TOML の各値は完全に自己完結しているため、デフォルトでは YAML アンカーは生成されません。共有サブツリーが必要なら手で導入してください。

使いこなしのヒント

変換後、コミット前に YAML をリンタ(yamllint、kubeconform など)に通してください。変換器は構文を変換し、スタイルは変換しません。snake_case か kebab-case か、2 スペースか 4 スペースか、といった指定はわかりません。プロジェクトの規約で決めてください。

MIT/BSD-3 ライセンスの 2 つのライブラリ(public/assets に同梱)を使用:smol-toml で解析し、js-yaml で生成します。入力はこのページ内に留まります。

よくある質問

変換器は TOML のテーブル配列に対応していますか?
はい。`[[name]]` ヘッダは `name` キーの下の YAML シーケンス要素になり、テーブルの順序が保たれます。
YAML 出力は TOML のコメントを保持しますか?
いいえ。TOML コメントはパーサで除去されます。必要であれば YAML 出力に手で追加してください。
TOML の日付は YAML でどう表現されますか?
日付と日時は同じ ISO 表現の YAML 文字列になります。多くの YAML コンシューマは各言語の日付ライブラリで解析します。
TOML のインラインテーブルはどうなりますか?
単一行のネストされた YAML マッピングになります。可読性のためにブロックスタイルを要求するスタイルガイドもあります。リンタが警告する場合は手動で変換してください。
なぜ文字列がダブルクォートで囲まれますか?
YAML のシングルクォート文字列はエスケープシーケンスを禁じ、YAML のプレーンスカラには予約語があります。任意のテキストをラウンドトリップするにはダブルクォートが最も安全なデフォルトです。
TOML はアップロードされますか?
いいえ。解析はローカルの smol-toml、YAML の生成はローカルの js-yaml で行います。サーバへの送信は一切ありません。