CodeToolProCodeToolPro
GitHub

TOML Formatter

TOML Input

  • Formatted TOML

  • 技术详情

    TOML 格式化器的工作原理

    工具功能

    TOML 格式化器可美化和验证 TOML 配置文件。工具解析 TOML 语法树,按规范格式重新输出——键值对自动对齐、section 之间添加空行分隔、数组和行内表保持紧凑格式、日期时间和布尔值规范化为标准写法。支持自定义缩进宽度、键值对对齐方式(按 = 对齐或不)、以及数组是否每个元素单行。压缩模式将 TOML 压缩为紧凑的单行或最小化格式,去除所有注释和不必要的空白。


    常见开发者使用场景

    TOML 格式化器在多种项目配置场景中适用。Python 项目的 pyproject.toml 需要定期维护依赖和构建设置,格式化器确保文件保持整洁。Rust 项目的 Cargo.toml 在多人协作中容易出现格式不一致——格式化后更容易审核配置变更。GitHub Actions 或 CI/CD 流水线在验证配置文件时,格式化器作为 lint 步骤确保 TOML 语法正确性和格式一致性。批量生成 TOML 配置文件(如多环境部署配置)时,自动格式化确保输出符合标准。

    配合 JSON TOML 转换器 检查转换结果的格式,或使用 YAML 格式化器 对比不同配置语言的结构。


    TOML 规范与格式化规则

    TOML v1.0 规范的关键格式要求:

    • 键名规则:裸键(bare key)只能包含 A-Za-z0-9_-,带引号的键可使用任意字符。格式化时保持键名原样。
    • 数据类型:字符串(支持多行 """...""")、整数(支持二进制、八进制、十六进制和下划线分隔)、浮点数、布尔值、日期时间和数组。
    • Table 层级:[table] 表示标准 table,[[array]] 表示数组 table。点号分隔创建嵌套层级(如 [a.b.c])。
    • 行内表(Inline Table):{key = "value"} 格式的一行式写法,适合简单嵌套结构。

    常见陷阱与注意事项

    • 重复键检测:TOML 不允许重复的键名,格式化器在解析时会检测到重复并提示错误。
    • Table 顺序:TOML 要求所有标准 table 在数组 table([[array]])之前定义,格式化器会保持或修正这种顺序关系。
    • 注释保留:格式化时应尽量保留原始注释的位置和内容,特别是 section 前的描述性注释。
    • 字符串转义:格式化器不应修改字符串字面量内容,TOTML 字面量字符串('...' 单引号)中的反斜杠不需要转义。

    何时使用此工具而非代码

    在清理项目配置文件、审查依赖变更、或批量生成配置时使用此工具。对于 CI/CD 中的自动化格式校验,推荐使用 taplo(专门的 TOML 工具箱,支持格式化和 lint)、toml-sort(Python)或 EvenBetterTOML(VSCode 扩展)提供的实时格式化和语法高亮。

    How to Use TOML Formatter

    1. 1Paste your unformatted code or data into the input area
    2. 2Adjust formatting preferences (indent size, line width) if available
    3. 3Click Format to apply consistent styling and indentation
    4. 4Copy the formatted output to use in your project

    Frequently Asked Questions

    • Does the formatter preserve my code logic?

      Yes. The formatter only adjusts whitespace, indentation, and line breaks. It never modifies your code logic, variable names, or program structure.

    • Is TOML Formatter free?

      Yes, 100% free. No registration, no credit card required. All tools are freely available for developers worldwide.

    • Does this tool upload my data to any server?

      No. All processing runs locally in your browser using client-side JavaScript. Your input data, code, or files never leave your device. We do not store, log, or transmit any user data.