YAML 포맷터 & 검증기
YAML을 붙여넣고 포맷 버튼을 누르면 2칸 들여쓰기로 정리되고, 검증 버튼을 누르면 문법만 확인해요. YAML 1.2 엄격 모드. 모든 처리는 브라우저 안에서 진행되며 업로드가 없어요.
- 왼쪽 텍스트 영역에 YAML을 붙여넣어 주세요.
- 포맷 버튼을 누르면 파서를 거쳐 정규화된 YAML이 출력돼요.
- 검증 버튼은 입력을 변경하지 않고 문법만 검사합니다.
- 오류는 발생한 줄과 열을 알려줘요.
어떤 도구인가요?
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 같은 전용 린터를 쓰세요.