跳转到内容

Node.js API ​

@gdfmt/gdfmt 包提供经过验证的文本格式化与显式项目配置解析,支持 ESM、CommonJS 和 TypeScript 声明。

使用 pnpm add @gdfmt/gdfmt@next 安装预发布版本,对应的原生平台包会自动选择。

格式化文本 ​

js
import { format, formatSync } from '@gdfmt/gdfmt'

const source = 'var count=1\n'
const result = await format(source, {
  language: { godotVersion: '4.5' },
  format: { lineWidth: 100, indentStyle: 'tab' },
})

if (result.output === null) {
  console.error(result.diagnostics)
} else {
  console.log(result.output)
}

const syncResult = formatSync(source)

CommonJS 通过 require('@gdfmt/gdfmt') 提供相同的具名函数。

API行为
formatSync(source, options?)在调用线程验证并格式化文本
format(source, options?)返回相同结果的 Promise,核心工作在 libuv 上运行
resolveConfigSync(path, options?)同步解析文件系统配置
resolveConfig(path, options?)通过 libuv worker 解析配置

文本选项接受 language、format 与 sourceId,布局默认值与范围和配置一致。文本调用不发现项目配置,也不写文件。

无效选项会抛出异常或 reject,包括未知字段、null、非 JSON 值和未配对的 Unicode surrogate。源码错误或内部验证失败返回 output: null、changed: false 和结构化诊断;成功时包含经过验证的 output 与 changed。结果使用 schemaVersion: 1 和 spanEncoding: 'utf8Bytes'。

解析项目配置 ​

js
import { format, resolveConfig } from '@gdfmt/gdfmt'

const resolution = await resolveConfig('src/player.gd')
if (!resolution.ignored) {
  const result = await format(source, {
    language: resolution.config.language,
    format: resolution.config.format,
  })
  // 仅当 result.output 非 null 时使用它。
}

这里的 source 是已读取的文件或编辑器缓冲区文本。解析选项为 { cwd, config }:cwd 必须是绝对路径,默认取调用时的工作目录;config 可指定本地 JSON/JSONC 配置。结果包含 config、已应用的 files、editorconfigFiles、字段有效来源 sources 和 ignored。

调用方应自行检查 ignored,只将 config.language 和 config.format 传给文本 API。文件选择与写入由调用方负责。

诊断偏移 ​

span 为半开 UTF-8 字节偏移,包括 BOM 与实际 CRLF 字节,不是 JavaScript 字符串索引:

js
const bytes = Buffer.from(source)
const selected = bytes.subarray(span.start, span.end)

这里的 span 是诊断的源码范围。编辑器集成需要显式转换为 UTF-16 偏移。

运行时与原生包 ​

包声明的运行时为 Node 22.x 的 22.13+ 或 24.x,使用 Node-API 4。

平台包Rust target
@gdfmt/darwin-arm64aarch64-apple-darwin
@gdfmt/darwin-x64x86_64-apple-darwin
@gdfmt/win32-x64-msvcx86_64-pc-windows-msvc
@gdfmt/linux-x64-gnux86_64-unknown-linux-gnu
@gdfmt/linux-x64-muslx86_64-unknown-linux-musl

已记录的产物矩阵覆盖以上五个目标与 Node 22.13.0、24.0.0。每次发布仍须验证当次产物的完整矩阵。请保留 optional dependencies:加载器检查 OS、CPU、libc、包版本与编译 target,缺失、错配、损坏或不支持的原生产物会报错。安装时不编译,也不额外下载二进制。Linux glibc 产物基于 Ubuntu 24.04,未验证更旧 glibc。

包中的 gdfmt 可执行入口与独立 CLI 使用同一个 Rust runner。gdfmt/schema.json 导出配置 JSON Schema。

代码基于 MIT 许可发布。Logo:CC BY 4.0。