Автор:
    Создание:2026-06-25Последнее обновление:2026-06-25

    intlayerCompiler

    intlayerCompiler — это плагин Vite, который сканирует исходные файлы компонентов на наличие встроенных объявлений контента Intlayer (inline declarations) — контента, определенного непосредственно внутри компонента, а не в отдельном файле .content.ts, — и записывает их в файлы JSON словаря во время фазы трансформации.

    Начиная с Intlayer v9 intlayerCompiler автоматически включается в основной плагин intlayer(), если в конфигурации Intlayer включен компилятор (compiler.enabled: true) и задан путь вывода (compiler.output). Вам нужно регистрировать его отдельно только в том случае, если вы хотите полностью контролировать конфигурацию компилятора.

    Использование

    В составе 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 Переопределение конфигурации Intlayer, передаваемое в getConfiguration().
    compilerConfig Partial<CompilerConfig> Переопределение специфичных настроек компилятора (например, enabled, output, filesList).

    Пример

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

    Как это работает

    Фаза трансформации

    Для каждого исходного файла, соответствующего compiler.filesList, плагин компилятора:

    1. Пропускает содержимое файла через extractContent из @intlayer/babel.
    2. Вызывает onExtract для каждого найденного объявления, записывая результирующий JSON словаря в compiler.output.
    3. Возвращает трансформированный исходный код со встроенными объявлениями, замененными стандартными вызовами useIntlayer('key') / getIntlayer('key').

    Поддерживаемые типы файлов: .ts, .tsx, .js, .jsx, .vue, .svelte, .astro.

    HMR (Hot Module Replacement)

    Когда файл компонента сохраняется в режиме разработки, компилятор:

    1. Обнаруживает изменение файла через хук handleHotUpdate в Vite.
    2. Повторно извлекает контент из обновленного файла.
    3. Записывает обновленный JSON словаря.
    4. Запускает полную перезагрузку страницы (server.ws.send({ type: 'full-reload' })).

    Задержка (debounce) в 500 мс предотвращает бесконечный цикл повторного извлечения, вызываемый самой записью словаря (которая также запускает событие изменения файла).

    Дедупликация

    intlayerCompiler использует тот же механизм дедупликации createPrimaryInstanceGuard, что и другие встроенные плагины. Когда присутствуют как intlayer() (который включает компилятор), так и ручной вызов intlayerCompiler(), запускается только первый зарегистрированный экземпляр — словари не записываются дважды.