Автор:
    Создание: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', etc.
    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.