For AI agents: the complete documentation index is available at /zh/llms.txt, the full documentation bundle is available at /zh/llms-full.txt, and this page is available as Markdown at /zh/guide/cli/fmt.md.
  • 简体中文
  • fmt

    rs fmt 命令底层基于 Prettier。它默认并行处理文件,并使用高性能的 Yuku 解析器处理 JavaScript 和 TypeScript,相比于直接使用 Prettier 具有更好的性能。

    用法

    rs fmt [options] [files/globs...]

    可以传入文件、目录或 glob 模式来指定格式化范围。未传入目标时,rs fmt 会格式化当前目录。rs formatrs fmt 的别名。

    选项

    选项说明
    --write将格式化结果写回文件。这是默认模式。
    --check检查格式但不写入文件;存在格式差异时以状态码 1 退出。
    --list-different仅输出未格式化的路径;存在格式差异时以状态码 1 退出。
    --parallel-workers <count>设置格式化 worker 的最大数量。
    -h, --help显示命令用法和选项。

    --write--check--list-different 不能同时使用。

    示例:

    # 就地格式化当前目录
    rs fmt
    
    # 格式化指定文件和目录
    rs fmt src package.json
    
    # 使用带引号的 glob 包含和排除文件
    rs fmt "src/**/*.{js,ts}" "!src/generated/**"
    
    # 在 CI 中检查格式
    rs fmt --check

    文件发现

    扫描目录或 glob 时,rs fmt 会遵循 .gitignore、跳过二进制文件,并且不会遍历版本控制目录或 node_modules。Prettier 无法推断 parser 的文件也会被跳过。

    如需添加项目专属的排除规则,请使用 ignorePatterns。传入的正向和反向 glob 都基于当前工作目录解析。

    配置

    Rstack 配置文件中通过 define.fmt() 配置格式化:

    rstack.config.ts
    import { define } from 'rstack';
    
    define.fmt({
      printWidth: 100,
      singleQuote: true,
      sortPackageJson: true,
      ignorePatterns: ['dist/**'],
      overrides: [
        {
          files: '*.md',
          options: {
            proseWrap: 'always',
          },
        },
      ],
    });

    define.fmt() 支持标准的 Prettier 选项overrides 字段,并额外提供以下 Rstack 选项:

    • ignorePatterns:相对于 rstack.config.ts 所在目录的 Gitignore 兼容模式。
    • sortPackageJson:格式化前对 package.json 字段排序,默认值为 false
    配置来源

    rs fmt 不会加载 Prettier 配置文件、.prettierignore.editorconfig。请将其中的配置和忽略规则迁移到 define.fmt()

    使用 Prettier 插件时,需要将插件指定为包名、文件路径或 URL。由于格式化在 worker 中运行,因此不支持传入已导入的插件对象。包名和相对路径会基于 Rstack 配置文件所在目录解析。