著者:
    作成:2026-06-25最終更新:2026-06-25

    intlayerCompiler

    intlayerCompilerは、コンポーネントのソースファイルをスキャンしてインラインのIntlayerコンテンツ宣言(別個の.content.tsファイルではなく、コンポーネント内に直接定義されたコンテンツ)を探し、変換(transform)フェーズ中にそれらを辞書JSONファイルに書き込むViteプラグインです。

    Intlayer v9以降compiler.enabledtrueかつcompiler.outputがIntlayer設定で指定されている場合、intlayerCompilerはメインのintlayer()プラグインに自動的に組み込まれます。コンパイラ固有の設定を完全に制御したい場合にのみ、個別に登録する必要があります。

    使用方法

    intlayer()の一部として(推奨、v9+)

    Intlayer設定でコンパイラを有効にします:

    ts
    // intlayer.config.ts
    import { defineConfig } from "intlayer";
    
    export default defineConfig({
      compiler: {
        enabled: true,
        output: "./src/dictionaries", // 抽出された辞書が書き込まれる場所
      },
    });
    

    次に、追加の登録なしで標準プラグインを使用します:

    ts
    // vite.config.ts
    import { defineConfig } from "vite";
    import { intlayer } from "vite-intlayer";
    
    export default defineConfig({
      plugins: [intlayer()],
    });
    

    スタンドアロン(必要な場合)

    ts
    // vite.config.ts
    import { defineConfig } from "vite";
    import { intlayerCompiler } from "vite-intlayer";
    
    export default defineConfig({
      plugins: [intlayerCompiler()],
    });
    

    オプション

    ts
    import type { IntlayerCompilerOptions } from "vite-intlayer";
    
    オプション 説明
    configOptions GetConfigurationOptions getConfiguration()に転送されるIntlayer設定のオーバーライド。
    compilerConfig Partial<CompilerConfig> コンパイラ固有の設定セクションに対するオーバーライド(例:enabledoutputfilesList)。

    ts
    intlayerCompiler({
      configOptions: { configFile: "./config/intlayer.config.ts" },
      compilerConfig: { enabled: true, output: "./src/dictionaries" },
    });
    

    動作原理

    変換(Transform)フェーズ

    compiler.filesListに一致するすべてのソースファイルに対して、コンパイラプラグインは以下を実行します:

    1. ファイルコンテンツを@intlayer/babelextractContentに渡します。
    2. 検出された各宣言に対してonExtractを呼び出し、結果の辞書JSONをcompiler.outputに書き込みます。
    3. インライン宣言が標準のuseIntlayer('key') / getIntlayer('key')呼び出しに置き換えられた、変換後のソースコードを返します。

    サポートされているファイルタイプ:.ts.tsx.js.jsx.vue.svelte.astro

    HMR(ホットモジュールリプレイスメント)

    開発モードでコンポーネントファイルが保存されると、コンパイラは以下を実行します:

    1. ViteのhandleHotUpdateフックを介してファイルの変更を検知します。
    2. 更新されたファイルからコンテンツを再抽出します。
    3. 更新された辞書JSONを書き込みます。
    4. ページのフルリロードをトリガーします(server.ws.send({ type: 'full-reload' }))。

    500ミリ秒のデバウンス(遅延)により、辞書の書き込み自体(これもファイル変更イベントをトリガーします)が無限の再抽出ループを引き起こすのを防ぎます。

    重複排除(Deduplication)

    intlayerCompilerは、他のバンドルされたプラグインと同じcreatePrimaryInstanceGuard重複排除メカニズムを使用します。intlayer()(コンパイラを内包)と手動のintlayerCompiler()呼び出しの両方が存在する場合、最初に登録されたインスタンスのみが実行され、辞書が二重に書き込まれることはありません。