Автор:
    БозданиС:2026-06-25ПослСднСС обновлСниС:2026-06-25

    intlayerMinify

    intlayerMinify β€” это ΠΏΠ»Π°Π³ΠΈΠ½ Vite, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ скомпилированныС JSON-Ρ„Π°ΠΉΠ»Ρ‹ словарСй Π²ΠΎ врСмя сборки для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π°. Он удаляСт всС Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Π΅ символы ΠΈ, Π² сочСтании с intlayerPrune, ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ поля содСрТимого Π² ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ Π±ΡƒΠΊΠ²Π΅Π½Π½Ρ‹Π΅ алиасы (a, b, c, …) для Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π±Π°Π½Π΄Π»Π°.

    Плагин ΡƒΠΆΠ΅ автоматичСски Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΈ настроСн, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ intlayer(). Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π²Ρ‹ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ собираСтС стСк ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ².

    ИспользованиС

    ts
    // vite.config.ts
    import { 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),
      ],
    });
    

    Условия Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ

    intlayerMinify Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ всСх Ρ‚Ρ€Π΅Ρ… ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… условий:

    1. Команда Vite β€” build (Π½Π΅ serve / dev).
    2. build.optimize ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true (ΠΈΠ»ΠΈ undefined, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π²Π½ΠΎ true для сборок).
    3. build.minify ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true Π² вашСй ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Intlayer.

    Когда editor.enabled ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, ΠΏΠ»Π°Π³ΠΈΠ½ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π½ΠΎ пропускаСт ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ: ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ пСрСписываСт ΠΊΠ»ΡŽΡ‡ΠΈ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, поэтому keyPath, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹ΠΉ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ, большС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с Π½Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹ΠΌΠΈ словарями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚. Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ.

    Π§Ρ‚ΠΎ минимизируСтся

    Плагин ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π΄Π²Π° ΠΏΡƒΡ‚ΠΈ хранСния словарСй (опрСдСляСмых ΠΈΠ· intlayer.system):

    • dictionariesDir β€” статичСскиС словари для всСх языков (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, .intlayer/dictionaries/*.json)
    • dynamicDictionariesDir β€” динамичСскиС словари для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… языков
    Π‘Π»ΠΎΠ²Π°Ρ€ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ fetch (fetchDictionariesDir) Π½ΠΈΠΊΠΎΠ²Ρ‹ Π½Π΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈΠ· ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ API Π²ΠΎ врСмя выполнСния с использованиСм исходных ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ»Π΅ΠΉ. ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ Π±Ρ‹ ΠΊ Π½Π΅ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΡŽ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠΌ сСрвСра ΠΈ обращСниями ΠΊ свойствам Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

    Π‘ΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ»Π΅ΠΉ (минимизация свойств)

    Когда intlayerPrune Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ ΠΈ заполняСт ΠΊΠ°Ρ€Ρ‚Ρƒ pruneContext.dictionaryKeyToFieldRenameMap, intlayerMinify Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ»Π΅ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° Π² ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ алиасы. НапримСр:

    jsonc
    // Π΄ΠΎ
    { "key": "myDict", "content": { "title": "Hello", "description": "World" } }
    
    // послС (с сокрытиСм)
    { "key": "myDict", "content": { "a": "Hello", "b": "World" } }
    

    Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ обращСния ΠΊ свойствам Π² исходных Ρ„Π°ΠΉΠ»Π°Ρ… ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° шагС Babel Π² intlayerOptimize, поэтому ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ΅ остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ.

    Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ поля Intlayer (nodeType, translation ΠΈ Ρ‚.Π΄.) Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ.

    ΠšΡ€Π°ΠΉΠ½ΠΈΠ΅ случаи (Edge-cases)

    Π‘Π»ΠΎΠ²Π°Ρ€ΠΈ, ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ Π² pruneContext.dictionariesWithEdgeCases (структурныС Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ, ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ Π²ΠΎ врСмя Ρ„Π°Π·Ρ‹ очистки), ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ β€” ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ Π½Π΅ ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

    ΠšΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ (ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ / Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ / ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅)

    Для словарСй с массивом qualifierTypes (ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅) ΠΏΠ»Π°Π³ΠΈΠ½ сохраняСт массив qualifierTypes ΠΈ ΠΊΠ°Ρ€Ρ‚Ρƒ meta Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠœΠ°ΡΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ»Π΅ΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ записСй content. ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для сопоставлСния сСлСкторов Π²ΠΎ врСмя выполнСния) Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ.