Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
Этот документ устарел, базовая версия была обновлена 25 июня 2026 г..
Перейти к английской документацииИстория версий
- "Инициализация документации"v8.0.021.01.2026
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомЕсли у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.
Ссылка на документацию GitHubКопировать Markdown документа в буфер обмена
Документация плагина intlayerPrune для Vite
Плагин Vite intlayerPrune используется для tree-shake и удаления неиспользуемых словарей из бандла вашего приложения. Это помогает уменьшить итоговый размер бандла, включая только необходимое мультиязычное содержимое.
Плагин уже включен и автоматически настроен при использовании intlayer(). Вам нужно только зарегистрировать его вручную, если вы самостоятельно составляете стек плагинов.
Использование
As part of intlayer() (recommended)
Enable pruning through your Intlayer config and the main plugin handles everything:
Копировать код в буфер обмена
Копировать код в буфер обмена
Standalone
Если вы составляете стек плагинов вручную, intlayerPrune и intlayerMinify используют объект PruneContext, который должен быть создан один раз и передан обоим:
Копировать код в буфер обмена
Как это работает
1. Анализ использования (buildStart)
Во время buildStart плагин intlayerOptimize (также часть intlayer()) сканирует каждый файл исходного кода компонента, указанный в build.filesList. Для каждого вызова useIntlayer('key') или getIntlayer('key') он записывает точно, какие поля доступны, например:
Копировать код в буфер обмена
Это создает 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: визуальный редактор разрешает каждую правку через dictionaryKey + keyPath относительно не объединённых словарей, которых этот плагин никогда не касается, а очищенное поле — это поле, которое не читает ни один компонент, поэтому оно никогда не отображается и не может быть выбрано на странице.
