YAML格式化与验证器 - 在线格式化压缩YAML
使用语法高亮和树视图格式化、验证和压缩YAML配置文件。支持Kubernetes、Docker Compose、GitHub Actions — 100%浏览器处理,数据不离开您的设备。
常见问题
什么是YAML格式化工具?
YAML格式化工具可以将YAML文件重新格式化为一致的缩进、间距和结构。YAML是一种人类可读的数据序列化语言,广泛用于Kubernetes、Docker Compose、GitHub Actions等DevOps工具的配置文件。格式化工具确保您的YAML文件遵循一致的样式规范,使其更易于阅读、维护和审查。
如何使用此YAML格式化工具?
使用选项卡选择操作:格式化、压缩或树视图。在输入区粘贴YAML内容,上传.yaml/.yml文件,或点击Sample加载示例。工具会自动实时验证和处理。在右侧面板查看输出结果,根据需要调整格式选项。点击Copy按钮复制到剪贴板,或使用Download保存为.yaml文件。
我的数据安全吗?
您的数据100%安全,永远不会离开您的浏览器。此YAML格式化工具使用完全在客户端JavaScript中运行的js-yaml库。不会向任何服务器传输数据。所有处理都在您的设备上本地完成。您可以断开网络验证——初始页面加载后完全离线工作。
什么是YAML压缩?
YAML压缩通过将块样式转换为流样式({key: value}形式)、删除所有注释和不必要的空白,将YAML压缩到最小表示。这在需要将YAML嵌入环境变量、CLI参数或数据库字段时非常有用。压缩后的输出与原始数据语义完全相同。
格式化时YAML注释会怎样?
YAML注释(#后的文本)在格式化时会丢失,因为js-yaml解析器在解析阶段会丢弃它们。这是大多数YAML解析器的常见限制。如果文件包含重要注释,请在格式化前保留备份。数据值本身始终准确保留。
为什么YAML解析可能失败?
常见原因包括:不正确的缩进(YAML要求一致的空格数)、混用制表符和空格(YAML只允许空格)、字符串值中未加引号的特殊字符、重复键、无效的多行字符串指示符,以及no、yes等值被解释为布尔值的「挪威问题」。错误消息会显示检测到问题的确切行和列。
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));