본문으로 건너뛰기
Case Converter Online
ko

YAML 포매터와 유효성 검사기

YAML을 붙여넣으면 들여쓰기와 띄어쓰기를 바로잡고, 배포 전에 오류가 없는지 검사합니다. 주석은 그대로 남고 문제는 줄과 열로 알려 줍니다.

YAML 코드를 붙여넣거나 예시를 누르세요. Ctrl과 Enter를 누르면 포맷됩니다. 모든 작업은 브라우저에서 실행됩니다.

YAML 포매터가 하는 일

YAML은 Docker Compose 파일, 쿠버네티스 매니페스트, GitHub Actions 워크플로, Ansible 플레이북, 수많은 앱 설정 파일에 쓰이는 형식입니다. 구조가 들여쓰기로 정해지기 때문에 공백 하나만 잘못 들어가도 파일의 의미가 바뀌거나 배포가 멈출 수 있습니다. 이 YAML 포매터는 YAML을 일관된 들여쓰기와 띄어쓰기로 다시 쓰고, 엄격한 파서로 문법을 검사합니다. 그래서 문제가 파이프라인이 아니라 여기서 먼저 드러납니다.

작업은 두 가지입니다.

  • 포맷: 들여쓰기, 콜론과 목록 기호(-) 뒤의 공백, [ ]와 { } 안의 띄어쓰기를 표준에 맞게 정리합니다.
  • 검사: 파일을 파싱해 첫 번째 오류를 알려 주거나, 올바르면 짧은 요약을 보여 줍니다.

사용 방법

  1. 왼쪽 상자에 YAML을 붙여넣습니다. 붙여넣는 즉시 정렬됩니다. .yaml, .yml 파일은 파일 열기로, 예제는 예시로 불러올 수 있습니다.
  2. 들여쓰기를 공백 2칸 또는 4칸으로 고르고 줄 너비를 정합니다.
  3. 프로젝트에서 "text"보다 'text'를 선호한다면 작은따옴표를 켭니다.
  4. 포맷 또는 검사를 누릅니다. Ctrl+Enter는 마지막 작업을 다시 실행합니다.
  5. 복사를 누르거나, 다운로드를 눌러 .yaml 파일로 저장합니다.

정렬 전과 후

띄어쓰기가 들쭉날쭉하고 공백 4칸으로 들여쓴 Docker Compose 파일입니다.

version:   "3.8"
services:
    web:
        image:   "nginx:latest"
        ports:
            - "80:80"
        environment:
            - DEBUG=false
    db:
        image: postgres:16

공백 2칸으로 포맷한 결과입니다.

version: "3.8"
services:
  web:
    image: "nginx:latest"
    ports:
      - "80:80"
    environment:
      - DEBUG=false
  db:
    image: postgres:16

플로 컬렉션(flow collection)도 띄어쓰기가 고르게 맞춰집니다. tags: [ api, v2 ]와 limits: {cpu: 1, memory: 512}는 다음과 같이 바뀝니다.

tags: [api, v2]
limits: { cpu: 1, memory: 512 }

주석은 그대로 살아남습니다. 줄 끝 주석 앞의 불필요한 공백은 정리되지만 주석은 그 줄에 그대로 있습니다.

# Database settings
db:
  host: localhost # local only
  port: 5432

작은따옴표를 켜면 name: "web"이 name: 'web'으로 바뀝니다. "it's here"처럼 아포스트로피가 들어 있는 문자열은 이스케이프가 필요 없도록 큰따옴표를 유지합니다.

검사기가 잡아내는 오류

YAML 파서는 도구마다 엄격한 정도가 다릅니다. 이 검사기는 일부 도구가 그냥 넘기는 문제도 찾아냅니다. 다음은 도구가 실제로 보여 주는 메시지입니다. 위치는 한국어로, 오류 내용은 YAML 라이브러리가 내는 영어 그대로 표시됩니다.

문제 메시지
같은 키가 두 번 나옴 3행 1열: Map keys must be unique
들여쓰기에 탭 사용 2행 1열: Tabs are not allowed as indentation
공백 한 칸만큼 더 들여쓴 줄 2행 9열: Nested mappings are not allowed in compact mappings

가장 중요한 것은 중복 키 검사입니다. name: web, port: 80, name: api가 들어 있는 파일에서 많은 로더는 경고 없이 마지막 name만 남깁니다. 입력에서 보기를 누르면 해당 줄로 이동합니다.

---로 구분된 두 문서가 들어 있는 올바른 파일에 검사를 실행하면 올바른 YAML입니다. 문서는 2개입니다.라고 알려 줍니다.

팁과 한계

  • 포매터는 키 순서를 바꾸거나 값을 고치지 않습니다. yes, on, 010도 쓴 그대로 남습니다.
  • 긴 문자열은 다시 줄바꿈하지 않습니다. 접힌 블록(>)과 리터럴 블록(|)의 내용도 유지됩니다.
  • 앵커와 별칭(&name, *name)은 작성한 그대로 둡니다.
  • YAML에는 널리 쓰이는 압축 형식이 없으므로 압축(Minify) 버튼이 없습니다. 압축된 데이터가 필요하다면 JSON YAML 변환기에서 YAML을 JSON으로 바꾸세요.

YAML을 정렬하는 다른 방법

VS Code. Red Hat YAML 확장은 쿠버네티스 매니페스트 같은 파일에 포맷 기능과 스키마 검사를 추가합니다. 설치한 뒤 Format Document(문서 서식)를 실행하세요.

yq. Go로 만든 yq(Mike Farah 제작)는 YAML을 읽고 다시 씁니다. yq '.' file.yaml은 파일을 yq만의 일관된 스타일로 다시 출력하며, 같은 도구로 값을 조회하고 수정할 수도 있습니다.

Prettier. 프로젝트에서 이미 Prettier를 쓰고 있다면 .yaml과 .yml 파일을 이 페이지와 같은 규칙으로 정렬해 줍니다.

yamllint. 파일을 다시 쓰지 않고 스타일과 문법만 검사하는 Python 도구로, CI에서 유용합니다.

관련 도구

JSON을 YAML로, 또는 그 반대로 바꾸려면 JSON YAML 변환기를 쓰세요. JSON 파일에는 JSON 포매터를, Maven이나 안드로이드 파일 같은 XML 설정에는 XML 포매터를 쓰세요.

YAML 포매터 자주 묻는 질문

YAML은 왜 탭으로 들여쓰기할 수 없나요?

YAML 명세는 들여쓰기에 탭 문자를 허용하지 않고 공백만 허용합니다. 그래서 들여쓰기 메뉴에는 공백 2칸과 4칸만 있고 탭 옵션이 없으며, 검사기도 탭을 오류로 보고합니다.

주석이 유지되나요?

네. 주석은 제자리에 남습니다. 포매터는 띄어쓰기, 들여쓰기, 줄 배치만 바꿉니다. 키와 값의 순서도 그대로입니다.

중복 키를 잡아내나요?

네. 한 매핑 안에 같은 키가 두 번 나오면 Map keys must be unique 같은 오류가 두 번째 키의 줄 번호와 함께 표시됩니다. 많은 YAML 도구는 경고 없이 마지막 값만 남기기 때문에 실수가 묻힐 수 있습니다.

문서가 여러 개 들어 있는 파일도 처리하나요?

네. ---로 구분된 문서들을 함께 정렬하며, 검사를 누르면 문서가 몇 개인지 알려 줍니다.

쿠버네티스 시크릿이나 CI 파일에 써도 안전한가요?

YAML은 브라우저 안에서 처리되며 업로드되지 않습니다. 그래도 회사 정책상 금지되어 있다면 실제로 쓰고 있는 시크릿은 어떤 웹 페이지에도 붙여넣지 마세요.

코드와 데이터 도구 더 보기

전체 도구 보기