YAML 포맷터

YAML을 일관된 들여쓰기 너비로 정리하거나 JSON으로 변환합니다. 탭 문자 혼입과 들여쓰기 불일치도 감지합니다.

  • 이 도구는 자체 개발한 경량 파서를 사용하며, 키: 값 쌍, 중첩, 목록, 그리고 인라인 [a, b, c] / {a: 1} 형식을 지원합니다.
  • 들여쓰기가 3칸이나 5칸처럼 일정하지 않은 YAML을 붙여넣어도, 해석에 성공하면 공백 2칸 또는 4칸으로 통일해서 다시 출력할 수 있습니다.
  • "JSON으로 변환" 모드에서는 YAML 내용을 그대로 JSON으로 변환한 미리보기를 확인할 수 있습니다. CI 설정이나 API 응답과 비교할 때 유용합니다.
  • 오류가 발생하면 줄 번호가 표시되므로, 해당 줄의 들여쓰기나 콜론 뒤 공백 누락 여부를 확인해 보세요.
  • YAML에서는 탭 문자로 들여쓰기하는 것이 금지되어 있습니다. 편집기 설정에서 "탭을 공백으로 변환"을 활성화해 두면 이 문제를 미리 방지할 수 있습니다.

자주 묻는 질문

사람이 직접 편집・검토하는 설정 파일(CI 설정・Kubernetes 매니페스트 등)에는 주석을 쓸 수 있고 가독성이 높은 YAML이 적합합니다. 반면 프로그램 간에 주고받는 API 응답 등에는 모호함이 적고 빠르게 파싱할 수 있는 JSON이 적합합니다.

YAML 사양상 들여쓰기에 탭 문자를 사용하는 것은 금지되어 있습니다. 대부분의 파서는 이를 구문 오류로 처리하고 작업을 중단합니다. 편집기 설정에서 탭 입력을 자동으로 공백으로 변환하도록 해두면 안전합니다.

지원하지 않습니다. 이 도구는 Docker Compose・GitHub Actions 등에서 흔히 사용되는 "일반적인 부분집합"(매핑・목록・인라인 플로우・기본 스칼라 타입)을 대상으로 하며, 앵커・별칭・다중 문서・블록 스칼라(|>) 같은 고급 기능은 지원하지 않습니다.

따옴표 없이 noyesonoff를 쓰면, 많은 YAML 구현체가 이를 노르웨이의 국가 코드 같은 문자열이 아니라 불리언 값으로 해석해버리는 유명한 함정입니다. 문자열로 취급하고 싶다면 "no"처럼 따옴표로 감싸야 합니다.
ツールくん

여담이지만 ― YAML이 설정 파일의 주류가 된 이유

YAML(YAML Ain't Markup Language)은 2001년에 등장한 데이터 직렬화 형식입니다. 닫는 태그가 필요 없고 XML보다 훨씬 단순해 보인다는 이유로, 2010년대 이후 Docker Compose・GitHub Actions・Kubernetes 매니페스트 등 인프라 관련 설정 파일 형식으로 널리 채택되었습니다.

한편 YAML의 "들여쓰기로 구조를 표현한다"는 설계는 사람이 읽기에는 편리하지만, 복사・붙여넣기 시 들여쓰기가 쉽게 흐트러진다는 약점도 지니고 있습니다. 특히 탭과 공백이 혼용되면 많은 파서가 오류를 내지 않은 채 잘못된 구조로 해석해버리는 경우가 있어, 의도치 않은 설정 실수의 원인이 되기 쉽다는 점을 주의해야 합니다.

또한 "노르웨이 문제(Norway Problem)"라는 유명한 함정도 있습니다. 국가 코드 no를 따옴표 없이 쓰면, 많은 YAML 구현체가 이를 불리언 값 false로 해석해버리는 문제입니다. YAML 1.1과 1.2에서 불리언으로 취급되는 문자열의 범위가 다르다는 점도 구현체 간 호환성 문제의 원인 중 하나입니다.

→ 모든 여담 보기