Auteur:
    Création:2026-06-25Dernière mise à jour:2026-06-25

    intlayerMinify

    intlayerMinify est un plugin Vite qui minifie les fichiers JSON de dictionnaire compilés lors d'un build de production. Il supprime tous les espaces inutiles et, lorsqu'il est combiné avec intlayerPrune, renomme éventuellement les noms des champs de contenu en alias alphabétiques courts (a, b, c, …) pour réduire davantage la taille du bundle.

    Le plugin est déjà inclus et configuré automatiquement lorsque vous utilisez intlayer(). Vous n'avez besoin de l'enregistrer manuellement que si vous composez vous-même la pile de plugins.

    Utilisation

    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),  ],});

    Conditions d'activation

    intlayerMinify est actif uniquement lorsque les trois conditions suivantes sont remplies :

    1. La commande Vite est build (pas serve / dev).
    2. build.optimize est à true (ou undefined, qui vaut par défaut true pour les builds).
    3. build.minify est à true dans votre configuration Intlayer.

    Il est automatiquement désactivé lorsque editor.enabled est à true car l'éditeur a besoin du contenu complet et lisible par l'homme du dictionnaire.

    Ce qui est minifié

    Le plugin cible deux emplacements de dictionnaire (tels que résolus depuis intlayer.system) :

    • dictionariesDir — dictionnaires statiques toutes langues (ex. .intlayer/dictionaries/*.json)
    • dynamicDictionariesDir — dictionnaires dynamiques par langue
    Les dictionnaires en mode fetch (fetchDictionariesDir) ne sont jamais minifiés car ils sont servis depuis une API distante au moment de l'exécution en utilisant leurs noms de champs d'origine. Renommer les champs créerait un décalage entre la réponse du serveur et les accès aux propriétés côté client.

    Masquage des noms de champs (minification des propriétés)

    Lorsque intlayerPrune a analysé la codebase et rempli pruneContext.dictionaryKeyToFieldRenameMap, intlayerMinify renomme également les noms de champs de contenu en alias courts. Par exemple :

    json
    // avant{ "key": "myDict", "content": { "title": "Hello", "description": "World" } }// après (avec masquage){ "key": "myDict", "content": { "a": "Hello", "b": "World" } }

    Les accès aux propriétés correspondants dans les fichiers sources sont renommés par la passe Babel dans intlayerOptimize, le comportement au runtime reste donc inchangé.

    Les champs internes d'Intlayer (nodeType, translation, etc.) ne sont jamais renommés.

    Dictionnaires de cas limites (Edge-cases)

    Les dictionnaires signalés dans pruneContext.dictionariesWithEdgeCases (anomalies structurelles détectées lors de la phase de prune) sont entièrement ignorés — ni minifiés ni masqués — pour éviter de livrer des données corrompues.

    Groupes qualifiés (collections / variantes / enregistrements méta)

    Pour les dictionnaires avec un tableau qualifierTypes (collections, variantes et enregistrements méta), le plugin préserve le tableau qualifierTypes et la table de correspondance meta textuellement. Seules les entrées de content ont leurs noms de champs masqués. Les clés composites (utilisées pour la correspondance des sélecteurs au runtime) ne sont jamais touchées.