YAML 포맷터

포맷은 이 브라우저에서 실행됩니다. YAML은 업로드되지 않습니다.

최대 1,000,000자, 최대 100개 문서까지의 YAML을 붙여넣으세요. 포맷은 이 브라우저에서 실행됩니다.

YAML은 문법에는 관대하지만 들여쓰기에는 가차 없습니다. 공백 하나만 어긋나도 키가 조용히 리스트 항목으로 바뀌고, 뒤섞인 들여쓰기는 코드 리뷰를 고역으로 만듭니다. 이 포맷터는 js-yaml 엔진(YAML 1.2 코어 스키마)으로 입력을 브라우저 안에서 바로 파싱한 뒤, 선택한 들여쓰기, 컬렉션 스타일, 따옴표, 키 순서, 줄 너비로 다시 출력합니다. 설정 파일이 버전 관리에서 깔끔한 diff를 만들고 모든 기여자에게 읽기 쉬운 상태를 유지합니다.

YAML 포맷 방법

  1. 1

    YAML 붙여넣기

    한 스트림에 최대 100만 자, 최대 100개 문서까지. 아무것도 업로드되지 않으며 파싱은 브라우저에서 실행됩니다.

  2. 2

    옵션 선택

    들여쓰기 너비, 블록 또는 플로우 스타일, 따옴표, 키 정렬, 줄 너비를 고릅니다.

  3. 3

    포맷

    도구가 각 문서를 표준 공백과 선택한 스타일로 다시 구성합니다.

  4. 4

    복사하고 커밋

    출력은 구조적으로 동일한 YAML이라 설정 파일에 그대로 붙여 넣으면 됩니다.

포맷 전과 후

지저분한 입력:

server:
  port:   8080
  hosts: ["api.example.com",  "api2.example.com"]
  timeout:  30
  debug: true

포맷 결과(공백 2칸, 블록 스타일):

server:
  port: 8080
  hosts:
    - api.example.com
    - api2.example.com
  timeout: 30
  debug: true

포맷 옵션

옵션 기본값
들여쓰기 너비 2, 4 2
컬렉션 스타일 블록, 플로우 블록
따옴표 최소, 큰따옴표, 작은따옴표 최소
키 정렬 원래 순서, 알파벳순 원래 순서
줄 너비 80, 120, 무제한 120

따옴표 규칙

대개는 최소 따옴표가 정답입니다. 따옴표 없이 두면 위험한 경우가 아니라면 문자열은 그대로 유지됩니다. 포맷터는 다음의 경우 따옴표를 자동으로 추가합니다:

  • 문자열로 쓰인 레거시 불리언: yes, no, on, off, y, n. YAML 1.2는 이미 문자열로 읽지만, 많은 파서가 아직 YAML 1.1을 따르며 그 경우 따옴표 없는 nofalse가 됩니다. 포맷터는 출력에서 항상 따옴표를 붙이므로, 유명한 노르웨이 버그(국가 목록의 NOfalse로 읽히는 문제)가 파일을 사용하는 쪽을 물 수 없습니다.
  • 문자열로 쓰인 숫자: '007', '3.14'. 따옴표가 없으면 정수나 실수로 파싱됩니다.
  • :, #, [, { 같은 문자를 포함하거나 공백으로 시작하는 문자열. 그대로 출력하면 구조가 바뀝니다.

실행할 때마다 적용되는 정리

  • 줄 끝 공백. 제거됩니다.
  • 뒤섞이거나 고르지 않은 들여쓰기. 선택한 들여쓰기 너비로 정규화됩니다.
  • 컬렉션 안의 빈 줄. 제거됩니다.
  • 들여쓰기의 탭. YAML은 탭을 금지합니다. 파서가 문제 줄을 짚어 주는 명확한 오류와 함께 입력을 거부하므로, 다른 파서가 거부할 파일을 내보내는 대신 바로 고칠 수 있습니다.

주석, 앵커, 병합 키

포맷은 문서 모델을 정규화하므로, 커밋 전에 알아 둘 한계가 있습니다:

  • 주석은 제거됩니다. 파서가 문서를 데이터로 해석하므로 # 주석은 포맷 후 남지 않습니다. 주석이 중요하다면 사본을 보관하세요.
  • 앵커와 별칭은 해석됩니다. 별칭으로 공유되던 노드는 계속 공유되지만 &ref_0 같은 생성된 이름으로 다시 출력되며, 원래 앵커 이름은 유지되지 않습니다.
  • 병합 키(<<:)는 해석되어 병합된 값이 채워진 일반 매핑이 됩니다.

다중 문서 스트림

여러 문서가 담긴 스트림을 지원합니다. 각 문서는 독립적으로 포맷된 뒤 --- 구분자로 다시 이어지며, 한 번에 최대 100개 문서까지 처리합니다.

자주 묻는 질문

구조와 값은 동일하게 유지됩니다. 바뀌는 것은 표현(들여쓰기, 따옴표, 플로우 또는 블록, 정렬을 켠 경우 키 순서)뿐입니다. 의도적으로 보존하지 않는 것이 두 가지 있습니다. 주석은 제거되고 앵커 이름은 다시 생성됩니다.

따옴표 없는 문자열이 다른 값으로 파싱될 수 있으면 안전을 위해 따옴표가 필요합니다. 흔한 경우: 숫자로만 된 키나 값, :이나 #을 포함한 문자열, 그리고 YAML 1.1 파서가 true/false로 읽는 yes, no 같은 레거시 불리언입니다.

아니요. 스타일 옵션은 문서 전체에 적용됩니다. 블록은 모든 컬렉션을 줄 단위로 펼치고, 플로우는 컬렉션을 한 줄에 표기합니다. 비교가 필요하면 옵션을 바꿔 두 번 포맷하세요.

아니요. 파싱과 포맷은 내장 js-yaml 엔진으로 브라우저에서 실행됩니다. YAML은 서버를 거치지 않고, 저장되지 않으며, 페이지 주소에 추가되지도 않습니다. 여러 단계 화면이 결과를 보여줄 수 있도록 이 브라우저 세션 안에만 남습니다.

관련 도구