YAML 포맷터 & 검증기 - YAML 포맷/축소 온라인
구문 강조와 트리 뷰로 YAML 설정 파일을 포맷, 검증, 축소합니다. Kubernetes, Docker Compose, GitHub Actions 지원 — 100% 클라이언트 처리, 데이터가 브라우저를 떠나지 않습니다.
자주 묻는 질문
YAML 포맷터란 무엇인가요?
YAML 포맷터는 YAML(YAML Ain't Markup Language) 파일을 일관된 들여쓰기, 간격, 구조로 재포맷하는 도구입니다. YAML은 Kubernetes, Docker Compose, GitHub Actions 등 DevOps 도구에서 설정 파일로 널리 사용되는 사람이 읽기 쉬운 데이터 직렬화 언어입니다. YAML은 들여쓰기로 구조를 표현하므로 일관성 없는 포맷은 읽기 어렵고 오류가 발생하기 쉽습니다. 포맷터는 YAML 파일이 일관된 스타일 규칙을 따르도록 하여 가독성, 유지보수성, 코드 리뷰를 개선합니다.
이 YAML 포맷터는 어떻게 사용하나요?
탭에서 원하는 작업을 선택하세요: 포맷, 축소, 또는 트리 뷰. 입력 영역에 YAML을 붙여넣거나 .yaml/.yml 파일을 업로드하거나 Sample 버튼을 클릭하여 예제를 로드하세요 (Kubernetes Deployment, GitHub Actions, Docker Compose). 도구가 자동으로 실시간 검증 및 처리합니다. 오른쪽 패널(모바일에서는 하단)에서 결과를 확인하고 포맷 옵션(들여쓰기, 키 정렬)을 조정하세요. Copy 버튼으로 결과를 클립보드에 복사하거나 Download로 .yaml 파일로 저장할 수 있습니다.
데이터가 안전한가요? 서버로 전송되나요?
데이터는 100% 안전하며 브라우저를 떠나지 않습니다. 이 YAML 포맷터는 클라이언트 사이드 JavaScript로 실행되는 js-yaml 라이브러리를 사용합니다. 어떤 서버로도 데이터가 전송되지 않고, 데이터베이스에 저장되지 않으며, 어디에도 기록되지 않습니다. 모든 파싱, 검증, 포맷팅, 축소가 기기에서 로컬로 처리됩니다. 인터넷 연결을 끊어도 확인할 수 있습니다 — 초기 페이지 로드 후 완전히 오프라인으로 동작합니다.
YAML 축소란 무엇인가요?
YAML 축소는 블록 스타일(들여쓰기, 여러 줄)을 플로우 스타일({key: value, list: [1, 2, 3]} 형태)로 변환하고, 모든 주석을 제거하며, 불필요한 공백을 없애서 YAML을 가능한 가장 작은 표현으로 압축합니다. 환경 변수에 YAML을 삽입하거나, CLI 인수로 전달하거나, 데이터베이스 필드에 저장하거나, 전송 크기를 줄일 때 유용합니다. 축소된 출력은 원본과 의미적으로 동일합니다 — 모든 데이터 값이 보존됩니다.
포맷팅 시 YAML 주석은 어떻게 되나요?
YAML 주석(# 뒤의 텍스트)은 포맷팅 시 손실됩니다. js-yaml 파서가 파싱 단계에서 주석을 폐기하기 때문입니다. 이는 대부분의 YAML 파서에서 공통적인 제한사항입니다 — 원본 텍스트가 아닌 데이터 모델(매핑, 시퀀스, 스칼라)을 기반으로 동작합니다. 중요한 주석이 있는 YAML 파일은 포맷팅 전에 백업을 유지하세요. 데이터 값 자체는 항상 정확하게 보존됩니다.
YAML 파싱이 실패하는 이유는 무엇인가요?
일반적인 YAML 파싱 오류 원인: 잘못되거나 일관성 없는 들여쓰기(형제 요소 간 동일한 수의 공백 필요), 탭과 공백 혼용(YAML은 공백만 허용), 문자열 값의 따옴표 없는 특수 문자(콜론, 괄호 등), 같은 매핑의 중복 키, 잘못된 여러 줄 문자열 표시자, 그리고 no, yes, on, off가 불리언으로 해석되는 '노르웨이 문제'가 있습니다. 오류 메시지에 정확한 행과 열이 표시됩니다.
YAML과 JSON의 차이점은 무엇인가요?
YAML과 JSON 모두 구조화된 데이터를 표현하지만 크게 다릅니다. JSON은 객체에 중괄호 {}, 배열에 대괄호 []를 사용하며, 큰따옴표 키를 요구하고 주석을 지원하지 않습니다. YAML은 들여쓰기로 구조를 표현하며, 대부분의 문자열에 따옴표가 필요 없고, #로 주석을 지원하며, 여러 줄 문자열(| 및 >), 앵커/별칭, 다중 문서 등 추가 기능이 있습니다. JSON은 엄격하고 모호하지 않아 API에 적합합니다. YAML은 가독성을 우선시하여 설정 파일의 표준입니다.
코드 예제
// YAML formatting and validation using js-yaml
// Install: npm install js-yaml
const yaml = require('js-yaml');
// Validate YAML
function validateYaml(input) {
try {
yaml.load(input);
return { valid: true };
} catch (error) {
return {
valid: false,
error: error.reason || error.message,
line: error.mark ? error.mark.line + 1 : undefined,
column: error.mark ? error.mark.column + 1 : undefined,
};
}
}
// Format/Beautify YAML
function formatYaml(input, options = {}) {
const { indent = 2, sortKeys = false } = options;
try {
const parsed = yaml.load(input);
const formatted = yaml.dump(parsed, {
indent,
sortKeys,
lineWidth: -1,
noRefs: true,
});
return { success: true, output: formatted };
} catch (error) {
return { success: false, error: error.message };
}
}
// Minify YAML (convert to flow style)
function minifyYaml(input) {
try {
const parsed = yaml.load(input);
const minified = yaml.dump(parsed, {
flowLevel: 0,
lineWidth: -1,
noRefs: true,
});
return { success: true, output: minified };
} catch (error) {
return { success: false, error: error.message };
}
}
// Example
const yamlStr = 'name: test\nvalue: 42\nitems:\n - one\n - two';
console.log('Valid:', validateYaml(yamlStr));
console.log('Formatted:', formatYaml(yamlStr));
console.log('Minified:', minifyYaml(yamlStr));