YAMLYAML
YAML 포매터
지저분한 YAML을 정리하세요 — 모든 주석은 그대로.
YAML을 여기에 붙여넣거나 파일을 페이지에 놓으세요
입력하면 YAML이 여기에 표시됩니다
무료 · 무제한 · 가입 불필요 · 들여쓰기, 간격, 따옴표를 정규화 — 작성한 모든 주석은 유지됩니다.
정규화되는 것
- 들여쓰기 — 입력이 어떻게 섞여 있든 모든 계층이 2칸 또는 4칸 공백으로 다시 쓰이고, 키 아래에 중첩된 시퀀스는 그 키 아래로 들여쓰기됩니다.
- 공백 — 콜론과 목록 하이픈 뒤에 공백 하나, 줄 안 주석 앞에 공백 하나. 연속된 빈 줄은 하나로 합쳐집니다.
- 줄 끝과 끝 공백 — Windows 줄바꿈은 LF가 되고 줄 끝의 공백은 제거됩니다.
- 플로우 컬렉션 —
[80, 443]은[ 80, 443 ]이 됩니다. 블록 스타일로 펼쳐지지 않고 한 줄로 유지됩니다. - YAML 1.2에서 따옴표 없는 숫자 — 정규형으로 출력되므로
022는22,+1은1,1e3은1e+3이 됩니다. YAML 1.1 모드에서는0644같은 앞자리 0 팔진수가 유지됩니다. - 접힌 스칼라(
>) — 문단마다 한 줄로 다시 흐르게 하되 문단 구분은 유지됩니다. - 키 순서 — "키 정렬"을 켰을 때만. 그 외에는 키가 놓인 자리에 그대로 있습니다.
쓴 그대로 유지되는 것
- 모든 주석 — 독립된 줄, 값 뒤, 섹션 사이의 블록 모두.
- 따옴표 — 작은따옴표는 작은따옴표로, 큰따옴표는 큰따옴표로, 따옴표 없는 값은 그대로.
- 앵커, 별칭, 병합 키 —
&defaults,*defaults,<<:는 펼쳐지지 않고 유지됩니다. - 리터럴 블록 스칼라(
|) — 끝의 줄바꿈까지 한 줄 한 줄 그대로. - 시퀀스 순서는 항상, 키 순서는 정렬하지 않는 한.
- 다중 문서 파일의 문서 구분자(
---)와%YAML지시어. - 긴 줄 — 아무것도 줄바꿈되지 않으므로 긴 URL이나 명령은 한 줄로 남습니다.
- 빈 값,
~,null, 그리고 쓴 그대로의 불리언.True는True로 남습니다.
대부분의 포매터가 주석을 지우는 이유
거의 모든 온라인 YAML 도구는 같은 방식으로 작동합니다. 문서를 일반 데이터로 파싱한 다음 그 데이터를 다시 출력합니다. 주석은 데이터가 아니므로 이 왕복에서 절대 살아남지 못합니다. 설정 파일은 설정보다 주석이 더 많은 경우가 흔하며, 주석을 잃는 것은 값 뒤의 근거를 잃는 것입니다.
이 페이지는 사이트의 나머지와 다른 파서를 사용합니다 — 구체 구문 트리를 유지하는 파서라서 각 주석은 그것이 설명하는 줄에 붙어 있습니다. 그래서 포매터는 문법에 조금 더 엄격하기도 합니다. 충실하게 재구성할 수 있을 만큼 문서의 형태를 정확히 이해해야 하기 때문입니다.
주석과 구조 모두 살아남습니다
들여쓰기는 선택한 너비로 정규화되고, 주석은 놓은 자리에 그대로 남습니다.
정리 전
# Production cluster
server:
host: 0.0.0.0
port: 8080 # internal only
features:
- fast
- private정리 후
# Production cluster
server:
host: 0.0.0.0
port: 8080 # internal only
features:
- fast
- private정리 전후 예시 더 보기
이 페이지의 모든 예시는 위 도구에서 기본 2칸 들여쓰기로 정확히 이렇게 정리됩니다.
앵커, 별칭, 블록 스칼라는 쓴 그대로
4칸으로 들여쓴 Docker Compose 조각입니다. 앵커, 병합 키, 리터럴 블록은 그대로이고 들여쓰기만 바뀝니다.
정리 전
x-defaults: &defaults
restart: always
logging: json
services:
web:
<<: *defaults
image: nginx
command: |
sh -c "echo starting"
exec nginx정리 후
x-defaults: &defaults
restart: always
logging: json
services:
web:
<<: *defaults
image: nginx
command: |
sh -c "echo starting"
exec nginx검토하기 쉬운 diff를 위한 키 정렬
같은 파일에서 "키 정렬"을 켠 결과입니다. 매핑 키는 모든 계층에서 정렬되고, 시퀀스는 순서를 유지하며, 주석은 설명하는 키와 함께 이동합니다.
정리 전
replicas: 3
name: api
# Ports the service exposes
ports:
- 443
- 80
image: api:1.2정리 후
image: api:1.2
name: api
# Ports the service exposes
ports:
- 443
- 80
replicas: 3포매터, 검사기, 변환기 중 무엇을 쓸까?
셋 다 브라우저 안에서 같은 엔진으로 동작합니다. 무엇을 고를지는 파일이 다음에 어디로 가느냐에 달려 있습니다.
파일이 YAML로 남는다면 포매터
여러 사람이 편집한 Compose 파일, Helm values 파일, CI 파이프라인. 들여쓰기를 일관되게 맞추고 값을 설명하는 주석도 지키고 싶을 때입니다. 변환기를 거쳐 되돌리는 방식으로는 결코 얻을 수 없는 한 가지입니다.
무언가 파싱되지 않는다면 검사기
YAML 검사기는 같은 엔진으로 출력 창을 진단에 집중시킨 것입니다. 모든 오류에 줄, 열, 쉬운 원인, 수정 방법이 붙고 YAML 1.1과 1.2가 다르게 읽는 값은 모두 표시됩니다.
파일이 JSON을 쓰는 곳으로 간다면 변환기
API 요청 본문, 테스트 픽스처, jq 파이프라인. YAML to JSON 변환기는 주석을 버리고(JSON에는 주석 문법이 없습니다) 몇 개를 버렸는지 알려 주며, 앵커를 펼치고, 다중 문서 스트림을 배열이나 JSON Lines로 출력할 수 있습니다.
자주 묻는 질문
이 YAML 포매터는 주석을 유지하나요?
네. 포매터는 구체 구문 트리를 유지하는 파서로 문서를 분석하므로, 독립된 줄의 주석, 값 뒤의 주석, 섹션 사이의 주석 블록이 모두 들어간 자리에 그대로 나옵니다. 키 정렬을 켜면 주석은 바로 아래 키에 붙은 채 함께 이동합니다. 대부분의 온라인 포매터는 YAML을 단순 데이터로 바꿨다가 다시 출력하기 때문에 주석을 모두 잃습니다. 이 사이트의 JSON 변환기도 어쩔 수 없이 같은 일을 하지만 몇 개를 버렸는지 알려 줍니다.
정리하면 데이터가 바뀌나요?
구조와 텍스트는 건드리지 않습니다. 따옴표는 쓴 그대로, 앵커와 별칭과 병합 키는 제자리에, 블록 스칼라는 내용 그대로, 키 순서도 정렬을 요청하지 않는 한 유지됩니다. 정규화되는 것은 두 가지입니다. 따옴표 없는 숫자는 YAML 1.2에서 정규형으로 출력되므로 022는 22, +1은 1, 1e3은 1e+3이 됩니다. 버전을 1.1로 바꾸면 0644 같은 앞자리 0 팔진수는 유지됩니다. 접힌 스칼라(>)는 문단 구분을 유지한 채 다시 흐르게 됩니다. 값의 표기를 정확히 지켜야 한다면 따옴표로 감싸세요. 출력 아래의 경고에 YAML 1.1과 1.2가 다르게 읽는 따옴표 없는 값이 모두 나열됩니다.
포매터는 어떤 들여쓰기를 쓰나요?
기본은 2칸 공백이고 원하면 4칸입니다. 입력이 어떻게 들여쓰기되어 있든 문서의 모든 계층이 같은 너비가 되며, 키 아래에 중첩된 시퀀스는 그 키 아래로 들여쓰기됩니다. YAML은 탭 들여쓰기를 금지하므로 탭 옵션은 없고, 탭으로 들여쓴 문서는 정리되는 대신 줄 번호와 함께 오류로 보고됩니다.
키를 정렬할 수 있나요?
네. "키 정렬" 옵션은 모든 매핑의 키를 모든 중첩 계층에서 알파벳순으로 정렬합니다. 여러 사람이나 도구가 편집하는 파일에서 diff와 코드 리뷰가 쉬워집니다. 목록에서는 순서가 의미를 가지므로 시퀀스의 순서는 유지됩니다. 주석은 속한 키와 함께 이동합니다. 기본값은 꺼짐입니다. YAML에서 키 순서는 의미가 없지만, 파일을 읽는 사람에게는 의미가 있을 때가 많기 때문입니다.
다중 문서 YAML을 처리하나요?
네. ---로 구분된 여러 문서가 들어 있는 파일은 문서별로 정리되고 구분자는 유지되므로, Deployment, Service, Ingress가 들어 있는 Kubernetes 매니페스트는 하나의 파일로 남습니다. 맨 앞의 ---와 %YAML 지시어도 유지되며, 상태 줄에 정리된 문서 수가 표시됩니다.
변환기가 받아들이는 YAML을 포매터가 거부하는 이유는 무엇인가요?
포매터는 변환기보다 엄격한 파서를 씁니다. 주석을 제자리에 둔 채 문서를 다시 만들려면 문서의 정확한 형태를 이해해야 하기 때문입니다. 변환기에서는 파싱되지만 여기서 실패하는 문서는 YAML 검사기와 마찬가지로 줄, 쉬운 설명, 수정 제안과 함께 보고됩니다. "자주 발생하는 YAML 오류" 가이드는 파싱 실패 대부분의 원인인 여섯 가지 실수를 하나씩 설명합니다.
yamllint나 Prettier와 같은 건가요?
아니요. 하지만 함께 쓰면 좋습니다. yamllint는 스타일과 문법 문제를 보고하지만 파일을 고쳐 쓰지 않습니다. 이 포매터는 들여쓰기와 공백을 고쳐 쓰지만 줄 길이 같은 규칙은 강제하지 않습니다. Prettier의 YAML 출력은 여기서 얻는 결과와 비슷하며, 프로젝트에서 이미 쓰고 있다면 이 페이지는 필요 없습니다. 이 페이지는 지금 클립보드에 있는 파일을 위한 것으로, 설치할 것도 업로드되는 것도 없습니다.
정리할 때 YAML이 업로드되나요?
아니요. 포매터는 브라우저 탭에서 실행되는 JavaScript입니다. yaml 라이브러리는 페이지와 함께 로드되고 문서를 보낼 서버 엔드포인트는 없습니다. 페이지를 연 뒤 인터넷을 끊어도 계속 정리할 수 있습니다. 보통 정리하고 싶은 파일이 Kubernetes 매니페스트, Docker Compose 파일, CI 파이프라인이고 여기에는 호스트 이름, 레지스트리, 때로는 비밀 정보가 들어 있기 때문에 중요합니다.
명령줄에서 YAML을 정리하려면 어떻게 하나요?
yq -i . config.yaml은 파일을 제자리에서 다시 정리하고 주석을 유지합니다. -i를 빼면 결과를 출력합니다. Prettier가 설치되어 있다면 npx prettier --write "**/*.{yml,yaml}"로 프로젝트의 모든 YAML 파일을 정리합니다. Python에서는 ruamel.yaml의 라운드트립 모드가 주석을 유지한 채 정리하는데, 이는 PyYAML로는 할 수 없는 일입니다. 파일 하나뿐이라면 위 포매터에 붙여 넣으세요.