编译器
基于 Rust 的 gt-next SWC 插件。
编译器
gt-next 内置一个基于 Rust 的 SWC 插件,会在构建阶段进行分析,捕捉常见翻译 Error,并优化性能。
功能特性
动态内容检测
检测翻译组件中未封装的动态内容:
// ❌ 无效:未将动态内容包裹
<T>你好,{userName}</T>
// ✅ 有效:动态内容已包裹在变量组件中
<T>你好,<Var>{userName}</Var></T>函数调用验证
检测传入翻译函数的非字面量参数:
const t = useGT();
// ❌ 无效——模板字符串与字符串拼接
t(`Hello ${name}`)
t("Hello " + name)
// ✅ 有效——使用变量替换的字符串字面量
t("Hello, {name}!", { name })编译时哈希生成
预先计算翻译哈希,以提升运行时性能:
// 输入
<T>你好,世界</T>
// 输出(启用后)
<T _hash="a1b2c3d4">你好,世界</T>配置
在 next.config.js 中配置 SWC 插件:
import { withGTConfig } from 'gt-next/config';
export default withGTConfig(nextConfig, {
locales: ['en', 'es'],
swcPluginOptions: {
logLevel: 'silent', // 控制警告日志输出
compileTimeHash: false, // 启用编译时哈希生成
},
});选项
-
logLevel:控制警告输出级别'silent'- 不显示警告(生产环境默认)'error'- 作为构建错误显示'warn'- 以警告形式显示(开发环境默认)'info'- 显示信息级日志'debug'- 显示所有调试信息
-
compileTimeHash:启用编译时哈希生成false- 禁用(默认)true- 在构建时生成哈希以提升性能
限制
SWC 插件逐个处理文件,无法检测通过重新导出的组件中的违规情况:
// 文件 A: export { T as Translate } from 'gt-next'
// 文件 B: import { Translate } from './A'
<Translate>Hello {name}</Translate> // 无法被检测到本指南如何?