Autore:
    Creazione:2026-01-21Ultimo aggiornamento:2026-01-21

    Documentazione del plugin Vite intlayerPrune

    Il plugin Vite intlayerPrune viene utilizzato per eseguire tree-shaking ed eliminare i dizionari non utilizzati dal bundle della tua applicazione. Questo aiuta a ridurre la dimensione finale del bundle includendo solo i contenuti multilingua necessari.

    Utilizzo

    Abilita il pruning tramite la configurazione di Intlayer e il plugin principale gestisce tutto:

    ts
    // intlayer.config.tsimport { defineConfig } from "intlayer";export default defineConfig({  build: {    optimize: true, // abilita sia prune che minify  },});
    ts
    // vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({  plugins: [intlayer()],});

    Standalone

    Se stai componendo lo stack di plugin manualmente, intlayerPrune e intlayerMinify condividono un oggetto PruneContext che deve essere creato una sola volta e passato a entrambi:

    ts
    // 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), // opzionale, legge dallo stesso contesto  ],});

    Come funziona

    1. Analisi dell'utilizzo (buildStart)

    Durante buildStart, il plugin intlayerOptimize (anche parte di intlayer()) scansiona ogni file sorgente del componente elencato in build.filesList. Per ogni chiamata useIntlayer('key') o getIntlayer('key'), registra esattamente quali campi sono accessibili, ad es.:

    ts
    const { title, description } = useIntlayer("myDict");// registra: myDict → { title, description }

    Questo costruisce pruneContext.fieldUsageMap prima che vengano eseguite le chiamate transform.

    2. JSON pruning (transform, enforce: 'pre')

    When Vite processes a compiled dictionary JSON file, intlayerPrune intercepts it before Vite's built-in JSON → ESM conversion. It reads the field-usage map from pruneContext and removes any content field that is not in the recorded usage set.

    Two content shapes are supported:

    • Static dictionaries{ nodeType: "translation", translation: { en: {...}, fr: {...} } }. Fields are pruned per-locale inside translation.
    • Dynamic (per-locale) dictionaries — flat { fieldA: ..., fieldB: ... }. Fields are pruned at the top level.

    3. Edge cases

    Se la struttura del contenuto di un dizionario non può essere riconosciuta (ad esempio, una forma nidificata inusuale), viene aggiunta a pruneContext.dictionariesWithEdgeCases e lasciata intatta. Un avviso viene registrato. intlayerMinify salta anche questi dizionari.

    4. Field-rename map

    Quando la potatura ha successo, intlayerPrune scrive anche pruneContext.dictionaryKeyToFieldRenameMap — una mappatura dai nomi di campo originali agli alias brevi. intlayerMinify legge questa mappa per rinominare i campi nel JSON di output, e il pass di ridenominazione Babel di intlayerOptimize aggiorna gli accessi alle proprietà nei file sorgente di conseguenza.

    Condizioni di attivazione

    intlayerPrune è attivo solo quando tutte le seguenti condizioni sono vere:

    1. Il comando Vite è build.
    2. build.optimize è true (oppure undefined, che di default è true per i build).
    3. build.purge è true nella tua configurazione Intlayer.

    È automaticamente disabilitato quando editor.enabled è true perché l'editor necessita del contenuto completo del dizionario.