YAML フォーマッタ & バリデータ

YAML を貼り付けて、2 スペースのインデントでフォーマット、または構文を検証。YAML 1.2 厳格モード。アップロードなし。

  1. 左側のテキストエリアに YAML を貼り付けます。
  2. フォーマットをクリックすると、パーサを通してラウンドトリップし、正規 YAML を出力します。
  3. 検証をクリックすると、入力を変更せずに構文を確認します。
  4. エラーは問題のある行と列を指します。
何ができるのか?

js-yaml の YAML 1.2 厳格モードで YAML をパースし、2 スペースインデント、100 列の行幅、一貫したクォーティングで再出力します。検証ボタンは入力を変更せずに構文をチェックし、最初のエラーを報告します。出力は意味的に入力と等価です — 値、型、構造は保持されます。

乱雑な YAML 入力:

name:    Ada
tags: [math,logic]
active:true

フォーマットされた出力:

name: Ada
tags:
  - math
  - logic
active: true

よくある YAML エラーと修正方法

厳格モードの YAML 1.2 は空白に容赦ありません。以下のパターンが多くのパーサ失敗をカバーします。

  • スペースの代わりにタブ。 YAML 1.2 ではインデントにタブを禁止しています。すべてのタブをスペースに置き換えてください。
  • 不一致のインデントレベル。 4 スペースインデントの兄弟の下に 2 スペースインデントの子があると失敗します。1 つの幅を選び一貫して使ってください。
  • ブール値の罠。 YAML 1.1(ここのモードではない)では `yes`、`no`、`on`、`off` がブール値としてパースされていました。js-yaml は 1.2 を使いますが、古い動作に依存する現実の入力はユーザーを驚かせます。曖昧な値は引用符で囲んでください: `country: "NO"`。
  • 引用符のない特殊文字。 `:`、`?`、`&`、`*`、`!`、`|`、`>`、`\'`、`"`、`%`、`@`、`` ` `` で始まる値は引用符で囲む必要があります。
  • 閉じられていない引用符。 閉じる引用符が不足すると、パーサは残りのファイルを文字列の一部として吸収します。報告される行番号は実際のエラーから遠いことがあります。
  • アンカー / エイリアスの不一致。 宣言されていないアンカー `&name` を参照するエイリアス `*name` はエラーを発生させます。すべてのエイリアスに対して、先に宣言された一致するアンカーがあることを確認してください。
よくある質問

フォーマットはデータを変えますか?

いいえ — 空白、引用符、表現詳細の順序のみ変わります。パースされた値グラフは同じです。フォーマットされた YAML はオリジナルと同じインメモリ構造に再パースされます。

フォーマット時にコメントは保持されますか?

いいえ。js-yaml は parse-and-dump のラウンドトリップを通してコメントを保持しません。コメント保持の YAML フォーマットが必要なら、別のライブラリ(オプション付きの yaml.js、または `prettier --parser yaml` のような CLI ツール)を使ってください。

インデントをカスタマイズできますか?

現在のビルドは 2 スペースインデントを使います。カスタマイズするには、コマンドラインで js-yaml を実行し — 同じライブラリ — `{ indent: 4 }` など必要なものを渡してください。

どれくらいの大きさの YAML ファイルを扱えますか?

テキストエリアが遅くなる前に約 10 MB まで。ほとんどの設定ファイルは 1 MB 未満です。

私の YAML はアップロードされますか?

いいえ。すべてはあなたのブラウザで実行されます — 入力はこのページの JavaScript で解析・再シリアライズされ、サーバーに送信されることはありません。

重複キーのようなスタイル問題を lint しますか?

js-yaml はデフォルト設定で重複キーを拒否します(YAML 1.2 厳格要件)。一貫しない引用符やアンカー命名のような他のスタイル問題はフラグされません — それには yamllint のような専用 linter が必要です。