Posez votre question et obtenez un résumé du document en referencant cette page et le Provider AI de votre choix
Ce document n'est pas à jour, la version de base a été mise à jour le 25 juin 2026.
Aller à la doc anglaiseHistorique des versions
- "Init doc"v8.0.021/01/2026
Le contenu de cette page a été traduit à l'aide d'une IA.
Voir la dernière version du contenu original en anglaisIf 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
Documentation du plugin intlayerPrune pour Vite
Le plugin Vite intlayerPrune permet d'effectuer du tree-shaking et de supprimer les dictionnaires inutilisés du bundle de votre application. Cela aide à réduire la taille finale du bundle en n'incluant que le contenu multilingue nécessaire.
Utilisation
Dans le cadre de intlayer() (recommandé)
Activez le pruning via votre configuration Intlayer et le plugin principal gère tout :
Copier le code dans le presse-papiers
// intlayer.config.tsimport { defineConfig } from "intlayer";export default defineConfig({ build: { optimize: true, // active à la fois le pruning et la minification },});Copier le code dans le presse-papiers
// vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({ plugins: [intlayer()],});Standalone
Si vous composez manuellement la pile de plugins, intlayerPrune et intlayerMinify partagent un objet PruneContext qui doit être créé une seule fois et passé aux deux :
Copier le code dans le presse-papiers
// 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), // optionnel, lit depuis le même contexte ],});Comment ça marche
1. Analyse d'utilisation (buildStart)
Durante buildStart, le plugin intlayerOptimize (également partie de intlayer()) analyse chaque fichier source de composant listé dans build.filesList. Pour chaque appel useIntlayer('key') ou getIntlayer('key'), il enregistre exactement quels champs sont accédés, par exemple :
Copier le code dans le presse-papiers
const { title, description } = useIntlayer("myDict");// enregistre : myDict → { title, description }Cela construit pruneContext.fieldUsageMap avant que les appels transform ne s'exécutent.
2. Élagage JSON (transform, enforce: 'pre')
Lorsque Vite traite un fichier JSON de dictionnaire compilé, intlayerPrune l'intercepte avant la conversion JSON → ESM intégrée de Vite. Il lit la carte d'utilisation des champs à partir de pruneContext et supprime tout champ de contenu qui ne figure pas dans l'ensemble d'utilisation enregistré.
Deux formes de contenu sont supportées :
- Dictionnaires statiques —
{ nodeType: "translation", translation: { en: {...}, fr: {...} } }. Les champs sont élagués par locale à l'intérieur detranslation. - Dictionnaires dynamiques (par locale) — flat
{ fieldA: ..., fieldB: ... }. Les champs sont élagués au niveau supérieur.
3. Cas limites
Si la structure de contenu d'un dictionnaire ne peut pas être reconnue (par exemple, une forme imbriquée inhabituelle), il est ajouté à pruneContext.dictionariesWithEdgeCases et laissé inchangé. Un avertissement est enregistré. intlayerMinify ignore également ces dictionnaires.
4. Field-rename map
Lorsque l'élagage réussit, intlayerPrune écrit également pruneContext.dictionaryKeyToFieldRenameMap — un mapping entre les noms de champs originaux et leurs alias courts. intlayerMinify lit cette carte pour renommer les champs dans le JSON de sortie, et la passe de renommage Babel d'intlayerOptimize met à jour les accès aux propriétés dans les fichiers sources en conséquence.
Conditions d'activation
intlayerPrune est actif uniquement quand toutes les conditions suivantes sont vraies :
- La commande Vite est
build. build.optimizeesttrue(ouundefined, qui esttruepar défaut pour les builds).build.purgeesttruedans votre configuration Intlayer.
Il est automatiquement désactivé quand editor.enabled est true car l'éditeur a besoin du contenu complet du dictionnaire.