Author:
    Creation:2026-01-21Last update:2026-01-21

    intlayerPrune Vite рдкреНрд▓рдЧрдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝

    intlayerPrune Vite рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдкрдХреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдВрдбрд▓ рд╕реЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рди рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбрд┐рдХреНрд╢рдирд░реАрдЬрд╝ рдХреЛ рдЯреНрд░реА-рд╢реЗрдХ рдФрд░ рдкреНрд░реВрди (рд╣рдЯрд╛рдиреЗ) рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдмрд╣реБрднрд╛рд╖реА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╣реА рд╢рд╛рдорд┐рд▓ рдХрд░рдХреЗ рдЕрдВрддрд┐рдо рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

    рдЬрдм рдЖрдк intlayer() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ plugin рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╢рд╛рдорд┐рд▓ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк plugin stack рдХреЛ рд╕реНрд╡рдпрдВ compose рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

    рдЙрдкрдпреЛрдЧ

    intlayer() рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ (рдЕрдиреБрд╢рдВрд╕рд┐рдд)

    рдЕрдкрдиреЗ Intlayer рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ pruning рд╕рдХреНрд╖рдо рдХрд░реЗрдВ рдФрд░ рдореБрдЦреНрдп рдкреНрд▓рдЧрдЗрди рд╕рдм рдХреБрдЫ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ:

    ts
    // intlayer.config.ts
    import { defineConfig } from "intlayer";
    
    export default defineConfig({
      build: {
        optimize: true, // prune рдФрд░ minify рджреЛрдиреЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИ
      },
    });
    
    ts
    // vite.config.ts
    import { defineConfig } from "vite";
    import { intlayer } from "vite-intlayer";
    
    export default defineConfig({
      plugins: [intlayer()],
    });
    

    рд╕реНрд╡рддрдВрддреНрд░

    рдпрджрд┐ рдЖрдк рдкреНрд▓рдЧрдЗрди рд╕реНрдЯреИрдХ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрдВрдкреЛрдЬрд╝ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ intlayerPrune рдФрд░ intlayerMinify рдПрдХ PruneContext рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдПрдХ рдмрд╛рд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рджреЛрдиреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

    ts
    // vite.config.ts
    import { 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 plugin (рдЬреЛ intlayer() рдХрд╛ рднреА рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ) build.filesList рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдкреНрд░рддреНрдпреЗрдХ component source file рдХреЛ рд╕реНрдХреИрди рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ useIntlayer('key') рдпрд╛ getIntlayer('key') рдХреЙрд▓ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ fields рдХреЛ exactly рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреИрд╕реЗ:

    ts
    const { title, description } = useIntlayer("myDict");
    // records: myDict тЖТ { title, description }
    

    рдпрд╣ рдХрд┐рд╕реА рднреА transform рдХреЙрд▓ рдХреЗ рдЪрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ pruneContext.fieldUsageMap рдмрдирд╛рддрд╛ рд╣реИред

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

    рдЬрдм Vite рдПрдХ compiled dictionary JSON рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИ, рддреЛ intlayerPrune рдЗрд╕реЗ Vite рдХреЗ built-in JSON тЖТ ESM conversion рд╕реЗ рдкрд╣рд▓реЗ intercept рдХрд░рддрд╛ рд╣реИред рдпрд╣ pruneContext рд╕реЗ field-usage map рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА content field рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ рдЬреЛ recorded usage set рдореЗрдВ рдирд╣реАрдВ рд╣реИред

    рджреЛ content shapes рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ:

    • Static dictionaries тАФ { nodeType: "translation", translation: { en: {...}, fr: {...} } }. Fields рдХреЛ translation рдХреЗ рдЕрдВрджрд░ per-locale pruned рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
    • Dynamic (per-locale) dictionaries тАФ flat { fieldA: ..., fieldB: ... }. Fields рдХреЛ top level рдкрд░ pruned рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

    3. Edge cases

    рдпрджрд┐ рдХрд┐рд╕реА dictionary рдХреА content structure рдХреЛ рдкрд╣рдЪрд╛рдирд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд╕рд╛рдорд╛рдиреНрдп nested shape), рддреЛ рдЗрд╕реЗ pruneContext.dictionariesWithEdgeCases рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдЫреВрддрд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ warning рд▓реЙрдЧ рдХреА рдЬрд╛рддреА рд╣реИред intlayerMinify рднреА рдЗрди dictionaries рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

    4. Field-rename map

    рдЬрдм pruning рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, intlayerPrune pruneContext.dictionaryKeyToFieldRenameMap рднреА рд▓рд┐рдЦрддрд╛ рд╣реИ тАФ рдореВрд▓ field names рд╕реЗ short aliases рддрдХ рдПрдХ mappingред intlayerMinify рдЗрд╕ map рдХреЛ output JSON рдореЗрдВ fields рдХреЛ rename рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрдврд╝рддрд╛ рд╣реИ, рдФрд░ intlayerOptimize рдХрд╛ Babel rename pass source files рдореЗрдВ property accesses рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред

    рд╕рдХреНрд░рд┐рдпрдг рд╢рд░реНрддреЗрдВ

    intlayerPrune рд╕рдХреНрд░рд┐рдп рд╣реИ рдХреЗрд╡рд▓ рдЬрдм рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рднреА рд╕рддреНрдп рд╣реЛрдВ:

    1. Vite рдХрдорд╛рдВрдб build рд╣реИред
    2. build.optimize true рд╣реИ (рдпрд╛ undefined, рдЬреЛ builds рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ true рд╣реИ)ред
    3. build.purge рдЖрдкрдХреЗ Intlayer config рдореЗрдВ true рд╣реИред

    рдЬрдм editor.enabled true рд╣реЛрддрд╛ рд╣реИ рддрдм рднреА рдпрд╣ рд╕рдХреНрд░рд┐рдп рд░рд╣рддрд╛ рд╣реИ: рд╡рд┐рдЬрд╝реБрдЕрд▓ рдПрдбрд┐рдЯрд░ рдмрд┐рдирд╛-рдорд░реНрдЬ рдХрд┐рдП рдбрд┐рдХреНрд╢рдирд░реА рдХреЗ рд╡рд┐рд░реБрджреНрдз dictionaryKey + keyPath рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рд░ рд╕рдВрдкрд╛рджрди рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдпрд╣ рдкреНрд▓рдЧрдЗрди рдХрднреА рдирд╣реАрдВ рдЫреВрддрд╛, рдФрд░ рд╣рдЯрд╛рдпрд╛ рдЧрдпрд╛ рдлрд╝реАрд▓реНрдб рд╡рд╣ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХреЛрдИ рднреА рдХрдВрдкреЛрдиреЗрдВрдЯ рдирд╣реАрдВ рдкрдврд╝рддрд╛ тАФ рдЗрд╕рд▓рд┐рдП рд╡рд╣ рди рдХрднреА рд░реЗрдВрдбрд░ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рди рд╣реА рдкреЗрдЬ рдкрд░ рдЪреБрдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред