Задайте вопрос и получите краткое содержание документа через любого ИИ-провайдера на этой странице
Этот документ устарел, базовая версия была обновлена 25 июня 2026 г..
Перейти к английской документацииИстория версий
- "Инициализация документации"v8.0.021.01.2026
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
Документация плагина intlayerPrune для Vite
Плагин Vite intlayerPrune используется для tree-shake и удаления неиспользуемых словарей из бандла вашего приложения. Это помогает уменьшить итоговый размер бандла, включая только необходимое мультиязычное содержимое.
Использование
As part of intlayer() (recommended)
Enable pruning through your Intlayer config and the main plugin handles everything:
Копировать код в буфер обмена
// intlayer.config.tsimport { defineConfig } from "intlayer";export default defineConfig({ build: { optimize: true, // включает как прунинг, так и минификацию },});Копировать код в буфер обмена
// vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({ plugins: [intlayer()],});Standalone
Если вы составляете стек плагинов вручную, intlayerPrune и intlayerMinify используют объект PruneContext, который должен быть создан один раз и передан обоим:
Копировать код в буфер обмена
// vite.config.tsimport { defineConfig } from "vite";import { intlayerPrune, intlayerMinify } from "vite-intlayer";import { createPruneContext } from "@intlayer/babel";import { getConfiguration } from "@intlayer/config/node";const intlayerConfig = getConfiguration();const pruneContext = createPruneContext();export default defineConfig({ plugins: [ intlayerPrune(intlayerConfig, pruneContext), intlayerMinify(intlayerConfig, pruneContext), // опционально, читает из того же контекста ],});Как это работает
1. Анализ использования (buildStart)
Во время buildStart плагин intlayerOptimize (также часть intlayer()) сканирует каждый файл исходного кода компонента, указанный в build.filesList. Для каждого вызова useIntlayer('key') или getIntlayer('key') он записывает точно, какие поля доступны, например:
Копировать код в буфер обмена
const { title, description } = useIntlayer("myDict");// записывает: myDict → { title, description }Это создает pruneContext.fieldUsageMap перед выполнением любых вызовов transform.
2. JSON pruning (transform, enforce: 'pre')
Когда Vite обрабатывает скомпилированный файл JSON словаря, intlayerPrune перехватывает его перед встроенным преобразованием JSON → ESM в Vite. Он читает карту использования полей из pruneContext и удаляет любое поле содержимого, которое не находится в записанном наборе использования.
Поддерживаются две формы содержимого:
- Static dictionaries —
{ nodeType: "translation", translation: { en: {...}, fr: {...} } }. Поля обрезаются по локали внутриtranslation. - Dynamic (per-locale) dictionaries — плоская структура
{ fieldA: ..., fieldB: ... }. Поля обрезаются на верхнем уровне.
3. Граничные случаи
Если структура контента словаря не может быть распознана (например, необычная вложенная форма), она добавляется в pruneContext.dictionariesWithEdgeCases и остается без изменений. Записывается предупреждение. intlayerMinify также пропускает эти словари.
4. Field-rename map
При успешном завершении pruning intlayerPrune также записывает pruneContext.dictionaryKeyToFieldRenameMap — отображение исходных имен полей на короткие псевдонимы. intlayerMinify читает эту карту для переименования полей в выходном JSON, а Babel rename pass intlayerOptimize обновляет доступы к свойствам в исходных файлах соответственно.
Условия активации
intlayerPrune активен только когда все из следующих условий верны:
- Команда Vite —
build. build.optimizeимеет значениеtrue(илиundefined, что по умолчанию равноtrueдля сборок).build.purgeимеет значениеtrueв вашей конфигурации Intlayer.
Он автоматически отключается когда editor.enabled имеет значение true, потому что редактор требует полного содержимого словаря.