著者:
    作成: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.tsimport { defineConfig } from "intlayer";export default defineConfig({  compiler: {    enabled: true,    output: "./src/dictionaries", // 抽出された辞書が書き込まれる場所  },});

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

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

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

    ts
    // vite.config.tsimport { 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()呼び出しの両方が存在する場合、最初に登録されたインスタンスのみが実行され、辞書が二重に書き込まれることはありません。