コンパイラ

gt-next の Rust 製 SWC プラグイン。

コンパイラ

gt-next には、ビルド時に解析を行い、一般的な翻訳エラーを検出してパフォーマンスを最適化する Rust 製の SWC プラグインが含まれています。

機能

動的コンテンツの検出

翻訳コンポーネント内の未ラップの動的コンテンツを検出します。

// ❌ 無効 - 動的コンテンツがラップされていない
<T>Hello {userName}</T>

// ✅ 有効 - 動的コンテンツがVariableコンポーネントでラップされている
<T>Hello <Var>{userName}</Var></T>

関数呼び出しの検証

翻訳関数にリテラル以外の引数が渡された場合に検出します:

const t = useGT();

// ❌ 無効 - テンプレートリテラルと文字列連結
t(`Hello ${name}`)
t("Hello " + name)

// ✅ 有効 - 変数置換を使用した文字列リテラル
t("Hello, {name}!", { name })

コンパイル時のハッシュ生成

実行時のパフォーマンスを高めるため、翻訳ハッシュを事前に計算します:

// 入力
<T>Hello world</T>

// 出力(有効化時)
<T _hash="a1b2c3d4">Hello world</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> // 検出されません

このガイドはいかがですか?