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

    intlayerMinify

    intlayerMinify — это плагин Vite, который минимизирует скомпилированные JSON-файлы словарей во время сборки для продакшена. Он удаляет все ненужные пробельные символы и, в сочетании с intlayerPrune, опционально переименовывает поля содержимого в короткие буквенные алиасы (a, b, c, …) для дополнительного уменьшения размера бандла.

    Плагин уже автоматически включен и настроен, если вы используете intlayer(). Вам нужно регистрировать его вручную только в том случае, если вы самостоятельно собираете стек плагинов.

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

    ts
    // vite.config.tsimport { defineConfig } from "vite";import { intlayerMinify, intlayerPrune } from "vite-intlayer";import { createPruneContext } from "@intlayer/babel";const pruneContext = createPruneContext();export default defineConfig({  plugins: [    intlayerPrune(intlayerConfig, pruneContext),    intlayerMinify(intlayerConfig, pruneContext),  ],});

    Условия активации

    intlayerMinify активен только при выполнении всех трех следующих условий:

    1. Команда Vite — build (не serve / dev).
    2. build.optimize имеет значение true (или undefined, что по умолчанию равно true для сборок).
    3. build.minify имеет значение true в вашей конфигурации Intlayer.

    Он автоматически отключается, когда editor.enabled имеет значение true, так как редактору требуется полное, понятное человеку содержимое словарей.

    Что минимизируется

    Плагин обрабатывает два пути хранения словарей (определяемых из intlayer.system):

    • dictionariesDir — статические словари для всех языков (например, .intlayer/dictionaries/*.json)
    • dynamicDictionariesDir — динамические словари для конкретных языков
    Словари в режиме fetch (fetchDictionariesDir) никовы не минимизируются, поскольку они запрашиваются из удаленного API во время выполнения с использованием исходных имен полей. Переименование полей привело бы к несоответствию между ответом сервера и обращениями к свойствам на стороне клиента.

    Сокрытие имен полей (минимизация свойств)

    Когда intlayerPrune анализирует кодовую базу и заполняет карту pruneContext.dictionaryKeyToFieldRenameMap, intlayerMinify также переименовывает имена полей контента в короткие алиасы. Например:

    json
    // до{ "key": "myDict", "content": { "title": "Hello", "description": "World" } }// после (с сокрытием){ "key": "myDict", "content": { "a": "Hello", "b": "World" } }

    Соответствующие обращения к свойствам в исходных файлах переименовываются на шаге Babel в intlayerOptimize, поэтому поведение в рантайме остается неизменным.

    Внутренние поля Intlayer (nodeType, translation и т.д.) никогда не переименовываются.

    Крайние случаи (Edge-cases)

    Словари, отмеченные в pruneContext.dictionariesWithEdgeCases (структурные аномалии, обнаруженные во время фазы очистки), полностью пропускаются — они не минимизируются и не скрываются, чтобы избежать отправки поврежденных данных.

    Квалифицированные группы (коллекции / варианты / метаданные)

    Для словарей с массивом qualifierTypes (коллекции, варианты и метаданные) плагин сохраняет массив qualifierTypes и карту meta без изменений. Маскируются только имена полей внутри записей content. Композитные ключи (используемые для сопоставления селекторов во время выполнения) никогда не изменяются.