Автор:
    Дата створення:2026-06-25Останнє оновлення:2026-06-25

    Пакет @intlayer/babel

    Пакет @intlayer/babel надає набір спеціалізованих плагінів Babel для Intlayer. Ці плагіни охоплюють весь цикл збірки: вилучення оголошень вмісту, перезапис викликів useIntlayer / getIntlayer в оптимізований імпорт словників, очищення невикористовуваних полів та мінімізація імен полів.

    Встановлення

    bash
    npm install @intlayer/babel
    

    Експортовані модулі

    Імпорт:

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

    Плагіни

    Функція / КлассОпис
    intlayerExtractBabelPluginПлагін Babel, який вилучає вміст для перекладу з вихідних файлів і автоматично впроваджує хуки useIntlayer / getIntlayer. Розроблений для використання з Next.js та інструментами збірки на базі Babel.
    intlayerOptimizeBabelPluginПлагін Babel, который перетворює виклики useIntlayer та getIntlayer і перезаписує їх імпорт в оптимізований імпорт JSON-словників (статичний, динамічний або через fetch).
    intlayerPurgeBabelPluginПлагін Babel, який аналізує вихідні файли та перезаписує зкомпільовані JSON-файли словників для вилучення невикористовуваних полів (build.purge) або їх перейменування на короткі аліаси (build.minify).
    intlayerMinifyBabelPluginПлагін Babel, який перезаписує вихідні файли для використання коротких аліасів полів, призначених на етапі мінімізації (наприклад, content.titlecontent.a). Залежить від intlayerPurgeBabelPlugin.
    makeFieldRenameBabelPluginФабрична функція, що створює плагін Babel для перейменування звернень до полів вмісту словника у вихідних файлах відповідно до dictionaryKeyToFieldRenameMap, заповненої в PruneContext.
    makeUsageAnalyzerBabelPluginФабрична функция, що створює плагін Babel для аналізу використання useIntlayer / getIntlayer у вихідному коді та агрегування даних про використання полів у спільному PruneContext.
    getSharedPruneContextДопоміжна функція, яка повертає спільний об'єкт PruneContext для вказаного базового каталогу або null, якщо він ще не був ініціалізований.

    Утиліти налаштування плагінів

    ФункціяОпис
    getExtractPluginOptionsЗавантажує конфігурацію Intlayer і повертає ExtractPluginOptions, готові для використання з intlayerExtractBabelPlugin.
    getOptimizePluginOptionsЗавантажує конфігурацію Intlayer та зкомпільовані словники, і повертає OptimizePluginOptions, готові для використання з intlayerOptimizeBabelPlugin.
    getPurgePluginOptionsЗавантажує конфігурацію Intlayer і повертає PurgePluginOptions, готові для використання з intlayerPurgeBabelPlugin.
    getMinifyPluginOptionsЗавантажує конфігурацію Intlayer і повертає MinifyPluginOptions, готові для використання з intlayerMinifyBabelPlugin.

    Типи

    ТипОпис
    CompilerModeРежим компілятора: 'dev' для розробки з підтримкою HMR або 'build' для продакшен-збірок.
    ExtractPluginOptionsПараметри для intlayerExtractBabelPlugin: список файлів, конфігурація, callback onExtract тощо.
    ExtractResultРезультат вилучення: ключ словника, шлях до файлу, вміст та локаль.
    OptimizePluginOptionsПараметри для intlayerOptimizeBabelPlugin: шляхи до словників, режим імпорту, зіставлення режимів для кожного словника тощо.
    PurgePluginOptionsПараметри для intlayerPurgeBabelPlugin: базовий каталог, прапорці purge/minify/optimize, список файлів компонентів.
    MinifyPluginOptionsПараметри для intlayerMinifyBabelPlugin: базовий каталог, прапорці minify/optimize/editorEnabled.
    PruneContextСпільний стан між плагінами аналізу та очищення: карти використання полів, карти перейменування тощо.
    DictionaryFieldUsageРезультат використання полів для одного словника: Set<string> або 'all', коли статичний аналіз не дає однозначної відповіді.
    NestedRenameEntryВузол у дереві перейменування: shortName та карта дочірніх елементів.
    NestedRenameMapОдин рівень у дереві перейменування: Map<string, NestedRenameEntry>.
    CompatCallerConfigКонфігурація сумісного аналізатора використання для пакетів compat-adapter (ім'я викликаючого модуля та параметри обробки).
    ScriptBlockБлок скрипта, вилучений із SFC-файлу (Vue або Svelte): вміст, зміщення початку та зміщення кінця.

    Допоміжні функції

    ФункціяОпис
    generateShortFieldNameПеретворює ціле число (починаючи з нуля) на короткий буквений ідентифікатор: 0'a', 25'z', 26'aa', тощо.
    buildNestedRenameMapFromContentРекурсивно будує NestedRenameMap на основі значень вмісту зкомпільованого словника з урахуванням структур вузлів Intlayer (translation, enumeration тощо).
    createPruneContextСтворює новий порожній об'єкт PruneContext, ініціалізований значеннями за замовчуванням.
    extractScriptBlocksВилучає блоки <script> із SFC-файлів (Vue / Svelte) для подальшого аналізу в Babel.
    BABEL_PARSER_OPTIONSКонстанта, що представляє параметри парсера Babel, які охоплюють підтримувані фреймворки (React/Vue/Svelte/Angular/...).
    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, оскільки останній зчитує карту перейменування, створену першим. Крім того, обом має передувати плагін intlayerOptimizeBabelPlugin, щоб він міг бачити ключі словників до перезапису викликів useIntlayer.