YAML 검증 및 포매터
포맷js-yaml로 YAML을 검증·정규화·압축합니다. 들여쓰기와 따옴표를 정리하고 여러 문서(---)를 분할합니다. 순수 YAML 처리이며 형식 변환은 하지 않습니다.
원격 URL은 가져오지 않습니다. JSON을 직접 붙여넣으세요.
이 페이지에서
YAML 포매터란?#
YAML 포매터는 빗나간 설정 파일 — 탭과 공백이 섞이거나, 들여쓰기 폭이 일관되지 않거나, 어떤 곳은 따옴표를 쓰고 어떤 곳은 안 쓰거나, 누군가 정의하고 다시는 쓰지 않은 앵커가 있는 — 을 받아 깨끗하고 예측 가능한 모양으로 정규화합니다. 또한 YAML이 악명 높은 그것을 잡아 냅니다. 멀쩡해 보이지만 조용히 다른 것을 의미하는 문서. YAML은 공백에 민감하고, 단어가 어떤 의미인지에 대해 암묵적 규칙이 가득하기 때문입니다.
이 페이지는 여러분의 YAML을 파싱하여 js-yaml 를 통해 제어된 방식으로 다시 내보냅니다. 서식 은 고른 폭(공백 2칸 또는 4칸)으로 다시 들여쓰기하고, 줄 접기를 꺼서 각 값이 제 줄에 앉게 하며, 앵커와 별칭을 평범한 반복 내용으로 펼쳐 출력이 완전히 자기 완결되게 합니다. 압축 은 같은 데이터를 flow 표기로 다시 내보냅니다. {a: 1, b: [2, 3]} 처럼, YAML이 JSON이나 CSS처럼 공백을 지울 수 없으므로 가장 컴팩트에 가까운 형태입니다. 어느 모드를 고르든 문서는 먼저 파싱되므로, 공백이 와야 할 자리에 탭이 있거나 뒤의 공백이 빠진 콜론은 조용히 잘못된 데이터 구조를 만드는 대신 행과 열과 함께 보고됩니다.
사용 방법#
- 왼쪽의 입력 패널에 YAML을 붙여넣으세요. 자리 표시자가 최소한의 문서를 보여 주며, 예제 를 누를 수도 있습니다.
- 도구 모음에서 모드 버튼을 고르세요.
- 서식 — 다시 들여쓰기하고, 줄 접기를 끄고, 앵커/별칭을 펼치고, 모든 콜렉션을 블록 스타일로 내보냅니다.
- 압축 — 모든 콜렉션을 가능한 한 적은 줄 수의 flow 스타일로 내보냅니다. flow 콜렉션은 명시적이므로 들여쓰기가 무의미해집니다.
- 서식 모드에서 들여쓰기 를 고르세요. 2 또는 4 칸.
- 원한다면 따옴표 스타일을 고르세요. 자동 (스칼라가 실제로 필요할 때만 따옴표 — 기본값), 단일, 또는 이중. 이것은 따옴표가 필요한 스칼라에 따옴표 글자 를 정규화하며, 필요 없는 평문 값에 따옴표를 강제하지는 않습니다.
- 출력 패널에서 결과를 읽으세요. 헤더는 출력 크기를 보여 주고, 복사 로 가져옵니다. 지우기 는 양쪽 패널을 초기화합니다.
파싱이 실패하면 상태 표시줄이 문제의 행과 열을 보고합니다. js-yaml 의 YAML 오류는 위치를 가지며, 이 페이지는 그것을 직접 드러냅니다.
주요 기능#
- 같은 파싱에서 서식과 압축. 두 모드 모두 문서를 먼저 검증하므로, 어떤 버튼을 눌렀든 구조적 오류가 위치와 함께 한 번 보고됩니다.
- 앵커 편평화.
&anchor/*alias참조가 풀려 인라인으로 쓰여(noRefs) 출력이 세 화면 앞에서 정의된 이름에 의존하지 않습니다. 결과는 누구에게나 건넬 수 있는 자기 완결적 문서입니다. - 줄 접기 없음. 긴 값이 컬럼 한계에서 접히지 않아(
lineWidth: -1) 각 값이 정확히 한 줄을 차지합니다. diff하기 쉽고 읽기 쉽습니다. - 선택적 따옴표 정규화. 문서 전체에 따옴표 글자를 일관되게 하려 단일 또는 이중 따옴표를 고르거나, 진짜 따옴표가 필요한 값만 따옴표를 갖게 자동으로 두세요.
- 다중 문서 인식.
---로 구분된 입력은 여러 문서로 파싱되어---구분자를 그대로 유지한 채 다시 내보내집니다. Kubernetes 매니페스트와 비슷한 다중 문서 파일에 요긴합니다. - YAML 폭탄 방어. 중첩 깊이 상한이 병적으로 깊은 문서가 위험한 것으로 펼쳐지지 않게 막습니다.
- 엄격하게 클라이언트 사이드, 1 MB를 넘는 입력은 Web Worker로 처리되어 페이지가 응답성을 유지합니다.
실전 예시#
재사용된 앵커와 살짝 불균일한 스타일이 있는 서비스 설정입니다.
입력:
service:
name: &name "api-gateway"
host: example.com
replicas: 3
id: *name
logging:
level: info
outputs: [{name: stdout}, {name: file}]
서식 을 2 칸, 자동 따옴표로 누르면:
service:
name: api-gateway
host: example.com
replicas: 3
id: api-gateway
logging:
level: info
outputs:
- name: stdout
- name: file
눈에 보이는 일이 두 가지 일어났습니다. 앵커 &name 과 별칭 *name 이 모두 리터럴 값 api-gateway 로 풀려, id 가 이제 평문 값으로 읽히고 문서가 더는 앵커에 의존하지 않습니다. 그리고 flow형 목록 [{name: stdout}, {name: file}] 이 블록 목록으로 다시 쓰여, 한 줄에 한 항목씩 — 훑고 다른 버전과 diff하기 훨씬 쉽습니다. 같은 입력에서 압축 을 누르면 같은 데이터가 flow 형태로 돌아옵니다.
service: {name: api-gateway, host: example.com, replicas: 3, id: api-gateway}
logging: {level: info, outputs: [{name: stdout}, {name: file}]}
모든 콜렉션이 이제 인라인입니다. 들여쓰기와 줄바꿈이 사라져 바이트 수가 줄지만, 의미는 동일합니다. 공백에 민감한 형식에 대해 압축이 의미해야 하는 것이 정확히 이것입니다.
FAQ#
제 주석은 어디로 갔나요?#
js-yaml 을 통한 YAML 왕복은 주석을 파싱하고 버립니다. 라이브러리에 주석을 보존하는 다시 덤퍼가 없습니다. 주석은 파싱 중에 용인되어(결코 오류를 일으키지 않음) 출력에는 나타나지 않습니다. 주석이 중요한 맥락을 담고 있다면 원본 파일을 진실의 원천으로 유지하고, 이 도구의 출력을 정규형 기계 형태로 다루세요.
YAML에서 서식과 압축의 차이는 무엇인가요?#
서식은 문서를 깨끗한 블록 스타일로 다시 씁니다. 고른 폭으로 들여쓰기된 중첩 매핑과 시퀀스, 줄당 하나의 값, 접기 없음. 압축은 같은 데이터를 flow 스타일로 다시 씁니다. 한 줄에 {key: value} 와 [a, b] 콜렉션. 둘 다 먼저 동일하게 파싱하며, 데이터를 다시 직렬화하는 방식만 다릅니다.
이것은 YAML/JSON 변환기와 어떻게 다른가요?#
이 도구는 YAML을 넣고 YAML을 받습니다. YAML 문서를 정규화하거나 컴팩트하게 만들어 YAML을 돌려줍니다. 이 사이트의 YAML/JSON 변환기는 두 형식 사이를 번역합니다. 같은 형식을 더 나은 모양으로 원하면 이 페이지를 쓰고, 실제로 JSON을 원하면 변환기를 쓰세요.
제 YAML은 어디로 업로드되나요?#
어디로도 업로드되지 않습니다. js-yaml 은 페이지에 꾸려 넣어져 브라우저에서 실행됩니다. 1 MB를 넘는 입력은 파싱이 Web Worker 안에서 일어나지만 여전히 로컬이며, 어떤 것도 기기를 떠나지 않습니다.