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

    @intlayer/babel パッケージ

    @intlayer/babel パッケージは、Intlayer向けに特化した一連のBabelプラグインを提供します。これらのプラグインは、コンテンツ宣言の抽出、useIntlayer / getIntlayer呼び出しの最適化された辞書インポートへの書き換え、未使用フィールドのクリーンアップ、フィールド名の圧縮など、ビルドサイクル全体をカバーします。

    インストール

    bash
    npm install @intlayer/babel
    

    エクスポート

    インポート方法:

    ts
    import { ... } from "@intlayer/babel";
    

    プラグイン

    関数 / クラス説明
    intlayerExtractBabelPluginソースファイルから翻訳可能なコンテンツを抽出し、useIntlayer / getIntlayerフックを自動的に注入するBabelプラグイン。Next.jsおよびBabelベースのビルドツールでの使用向けに設計されています。
    intlayerOptimizeBabelPluginuseIntlayerおよびgetIntlayer呼び出しを変換し、そのインポートを最適化されたJSON辞書インポート(静的、動的、またはフェッチ経由)に書き換えるBabelプラグイン。
    intlayerPurgeBabelPluginソースファイルを分析し、コンパイルされた辞書JSONファイルを書き換えて、未使用のフィールドを削除する(build.purge)か、短いアルファベットのエイリアスに名前を変更する(build.minify)Babelプラグイン。
    intlayerMinifyBabelPluginミニファイ(圧縮)フェーズ中に割り当てられた短いフィールドエイリアス(例:content.titlecontent.a)を使用するようにソースファイルを書き換えるBabelプラグイン。intlayerPurgeBabelPluginに依存します。
    makeFieldRenameBabelPluginPruneContextに入力されたdictionaryKeyToFieldRenameMapに従って、ソースファイル内の辞書コンテンツフィールドアクセス名を変更するBabelプラグインを生成するファクトリ関数。
    makeUsageAnalyzerBabelPluginソースコード内でのuseIntlayer / getIntlayerの使用状況を分析し、共有PruneContext内にフィールドの使用状況データを集計するBabelプラグインを生成するファクトリ関数。
    getSharedPruneContext指定されたベースディレクトリに対する共有PruneContextオブジェクトを返すヘルパー関数。まだ初期化されていない場合はnullを返します。

    プラグイン設定ユーティリティ

    関数説明
    getExtractPluginOptionsIntlayer設定を読み込み、intlayerExtractBabelPluginで使用できる状態のExtractPluginOptionsを返します。
    getOptimizePluginOptionsIntlayer設定とコンパイル済み辞書を読み込み、intlayerOptimizeBabelPluginで使用できる状態のOptimizePluginOptionsを返します。
    getPurgePluginOptionsIntlayer設定を読み込み、intlayerPurgeBabelPluginで使用できる状態のPurgePluginOptionsを返します。
    getMinifyPluginOptionsIntlayer設定を読み込み、intlayerMinifyBabelPluginで使用できる状態のMinifyPluginOptionsを返します。

    説明
    CompilerModeコンパイラモード:'dev' HMRサポート付き開発用、または'build'本番ビルド用。
    ExtractPluginOptionsintlayerExtractBabelPluginのオプション:ファイルリスト、設定、onExtractコールバックなど。
    ExtractResult抽出結果:辞書キー、ファイルパス、コンテンツ、およびロケール。
    OptimizePluginOptionsintlayerOptimizeBabelPluginのオプション:辞書パス、インポートモード、辞書ごとのモードマップなど。
    PurgePluginOptionsintlayerPurgeBabelPluginのオプション:ベースディレクトリ、クリーンアップ/ミニファイ/最適化フラグ、コンポーネントファイルリスト。
    MinifyPluginOptionsintlayerMinifyBabelPluginのオプション:ベースディレクトリ、ミニファイ/最適化/editorEnabledフラグ。
    PruneContext分析プラグインとクリーンアッププラグインの間で共有される状態:フィールド使用マップ、名前変更マップなど。
    DictionaryFieldUsage単一の辞書に対するフィールド使用結果:静的分析で確定できない場合はSet<string>または'all'
    NestedRenameEntry名前変更ツリー内のノード:shortNameと子ノードのマップ。
    NestedRenameMap名前変更ツリー内の1つのレベル:Map<string, NestedRenameEntry>
    CompatCallerConfig互換アダプタ(compat-adapter)パッケージ用の互換使用アナライザ設定(呼び出し元名と処理オプション)。
    ScriptBlockSFCファイル(VueまたはSvelte)から抽出されたスクリプトブロック:コンテンツ、開始オフセット、および終了オフセット。

    ユーティリティ関数

    関数説明
    generateShortFieldName整数(ゼロから開始)を短いアルファベットの識別子に変換します:0'a'25'z'26'aa'など。
    buildNestedRenameMapFromContentコンパイルされた辞書のコンテンツ値から、Intlayerノード構造(translation、enumerationなど)を考慮してNestedRenameMapを再帰的に構築します。
    createPruneContextデフォルト値で初期化された新しい空のPruneContextオブジェクトを作成します。
    extractScriptBlocks後続のBabel分析のために、SFCファイル(Vue / Svelte)から<script>ブロックを抽出します。
    BABEL_PARSER_OPTIONSサポートされているフレームワーク(React/Vue/Svelte/Angular/...)をカバーするBabelパーサーオプションを表す定数。
    INTLAYER_CALLER_NAMESオリジナルのIntlayer呼び出し元名の定数リスト:['useIntlayer', 'getIntlayer']

    使用例

    js
    // babel.config.js
    const {
      intlayerExtractBabelPlugin,
      intlayerPurgeBabelPlugin,
      intlayerMinifyBabelPlugin,
      intlayerOptimizeBabelPlugin,
      getExtractPluginOptions,
      getPurgePluginOptions,
      getMinifyPluginOptions,
      getOptimizePluginOptions,
    } = require("@intlayer/babel");
    
    module.exports = {
      presets: ["next/babel"],
      plugins: [
        [intlayerExtractBabelPlugin, getExtractPluginOptions()],
        [intlayerPurgeBabelPlugin, getPurgePluginOptions()],
        [intlayerMinifyBabelPlugin, getMinifyPluginOptions()],
        [intlayerOptimizeBabelPlugin, getOptimizePluginOptions()],
      ],
    };
    
    注意: intlayerPurgeBabelPluginは、後者が前者の構築した名前変更マップを読み取るため、intlayerMinifyBabelPluginよりもに宣言する必要があります。また、useIntlayer呼び出しが書き換えられる前に辞書キーを検知できるようにするため、両方の前にintlayerOptimizeBabelPluginを配置する必要があります。