YAML 포맷터 & 검증기

YAML을 붙여넣고 포맷 버튼을 누르면 2칸 들여쓰기로 정리되고, 검증 버튼을 누르면 문법만 확인해요. YAML 1.2 엄격 모드. 모든 처리는 브라우저 안에서 진행되며 업로드가 없어요.

  1. 왼쪽 텍스트 영역에 YAML을 붙여넣어 주세요.
  2. 포맷 버튼을 누르면 파서를 거쳐 정규화된 YAML이 출력돼요.
  3. 검증 버튼은 입력을 변경하지 않고 문법만 검사합니다.
  4. 오류는 발생한 줄과 열을 알려줘요.
어떤 도구인가요?

js-yaml의 YAML 1.2 엄격 모드로 파싱한 뒤 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칸 들여쓰기가 오면 실패해요. 한 가지 폭으로 통일하세요.
  • 부울 함정. YAML 1.1에서는 `yes`, `no`, `on`, `off` 가 부울로 파싱됐어요. js-yaml은 1.2 를 쓰지만, 1.1 동작에 의존하는 외부 입력은 여전히 문제일 수 있어요. 모호한 값은 따옴표로 감싸세요: `country: "NO"`.
  • 특수 문자에 따옴표 없음. `:`, `?`, `&`, `*`, `!`, `|`, `>`, `\'`, `"`, `%`, `@`, `` ` `` 로 시작하는 값은 따옴표로 감싸야 해요.
  • 닫지 않은 따옴표. 닫는 따옴표가 없으면 파서가 다음 따옴표까지 모두 문자열로 흡수해요. 보고된 줄 번호가 실제 오류 위치와 동떨어질 수 있어요.
  • 앵커 / 별칭 불일치. `&name` 으로 선언되지 않은 앵커를 `*name` 별칭이 참조하면 오류가 발생해요. 모든 별칭에 대해 앞에 같은 이름의 앵커가 선언돼 있는지 확인하세요.
자주 묻는 질문

포맷이 데이터를 변경하나요?

아니요 — 표현 형식(공백, 따옴표, 정렬)만 바뀝니다. 파싱된 값 그래프는 동일해요. 포맷된 YAML을 다시 파싱하면 원본과 같은 메모리 구조가 됩니다.

포맷할 때 주석이 보존되나요?

아니요. js-yaml의 파싱-덤프 왕복은 주석을 유지하지 못해요. 주석을 보존하는 포맷이 필요하면 다른 라이브러리(예: yaml.js의 옵션 사용)나 `prettier --parser yaml` 같은 CLI 도구를 사용하세요.

들여쓰기 폭을 바꿀 수 있나요?

현재 빌드는 2칸으로 고정돼 있어요. 커스터마이즈하려면 같은 라이브러리인 js-yaml을 명령줄에서 실행하면서 `{ indent: 4 }` 같은 옵션을 직접 전달하세요.

얼마나 큰 YAML 파일까지 처리되나요?

약 10 MB까지는 무리 없이 동작해요. 그 이상은 텍스트 영역 자체가 느려져요. 대부분의 설정 파일은 1 MB 미만입니다.

YAML이 어디론가 업로드되나요?

아니요. 모든 처리는 브라우저 안에서 진행돼요. 변환 버튼을 눌러도 어떤 서버에도 데이터가 전송되지 않습니다.

중복 키 같은 스타일 이슈도 검사하나요?

js-yaml은 기본 설정에서 중복 키를 거부해요(YAML 1.2 엄격 요구사항). 일관되지 않은 따옴표나 앵커 이름 같은 다른 스타일 이슈는 보고하지 않으니, 그런 검사가 필요하면 yamllint 같은 전용 린터를 쓰세요.