Penulis:
    Dibuat:2026-06-25Terakhir diperbarui:2026-06-25

    Paket @intlayer/babel

    Paket @intlayer/babel menyediakan satu set plugin Babel khusus untuk Intlayer. Plugin ini mencakup seluruh siklus pembuatan: mengekstrak deklarasi konten, menulis ulang panggilan useIntlayer / getIntlayer menjadi impor kamus yang dioptimalkan, memangkas bidang yang tidak digunakan, dan meminifikasi nama bidang.

    Instalasi

    bash
    npm install @intlayer/babel
    

    Ekspor

    Impor:

    ts
    import { ... } from "@intlayer/babel";
    

    Plugin

    Fungsi / KelasDeskripsi
    intlayerExtractBabelPluginPlugin Babel yang mengekstrak konten yang dapat diterjemahkan dari file sumber dan menyuntikkan kait (hook) useIntlayer / getIntlayer secara otomatis. Dirancang untuk digunakan dengan Next.js dan alat build berbasis Babel.
    intlayerOptimizeBabelPluginPlugin Babel yang mentransformasikan panggilan useIntlayer dan getIntlayer dan menulis ulang impor mereka ke impor kamus JSON yang dioptimalkan (statis, dinamis, atau melalui fetch).
    intlayerPurgeBabelPluginPlugin Babel yang menganalisis file sumber dan menulis ulang file kamus JSON yang dikompilasi untuk menghapus bidang yang tidak digunakan (build.purge) atau mengganti namanya menjadi alias pendek (build.minify).
    intlayerMinifyBabelPluginPlugin Babel yang menulis ulang file sumber untuk menggunakan alias bidang pendek yang ditetapkan selama fase minifikasi (misalnya content.titlecontent.a). Bergantung pada intlayerPurgeBabelPlugin.
    makeFieldRenameBabelPluginFungsi pabrik (factory) yang menghasilkan plugin Babel untuk mengganti nama akses bidang konten kamus dalam file sumber sesuai dengan dictionaryKeyToFieldRenameMap yang diisi dalam PruneContext.
    makeUsageAnalyzerBabelPluginFungsi pabrik yang menghasilkan plugin Babel untuk menganalisis penggunaan useIntlayer / getIntlayer dalam kode sumber dan mengumpulkan data penggunaan bidang dalam PruneContext bersama.
    getSharedPruneContextFungsi pembantu yang mengembalikan objek PruneContext bersama untuk direktori basis yang ditentukan, atau null jika belum diinisialisasi.

    Utilitas Konfigurasi Plugin

    FungsiDeskripsi
    getExtractPluginOptionsMemuat konfigurasi Intlayer dan mengembalikan ExtractPluginOptions yang siap digunakan dengan intlayerExtractBabelPlugin.
    getOptimizePluginOptionsMemuat konfigurasi Intlayer dan kamus yang dikompilasi, dan mengembalikan OptimizePluginOptions yang siap digunakan dengan intlayerOptimizeBabelPlugin.
    getPurgePluginOptionsMemuat konfigurasi Intlayer dan mengembalikan PurgePluginOptions yang siap digunakan dengan intlayerPurgeBabelPlugin.
    getMinifyPluginOptionsMemuat konfigurasi Intlayer dan mengembalikan MinifyPluginOptions yang siap digunakan dengan intlayerMinifyBabelPlugin.

    Tipe

    TipeDeskripsi
    CompilerModeMode kompilator: 'dev' untuk pengembangan dengan dukungan HMR, atau 'build' untuk build produksi.
    ExtractPluginOptionsOpsi untuk intlayerExtractBabelPlugin: daftar file, konfigurasi, callback onExtract, dll.
    ExtractResultHasil ekstraksi: kunci kamus, jalur file, konten, dan lokal.
    OptimizePluginOptionsOpsi untuk intlayerOptimizeBabelPlugin: jalur kamus, mode impor, peta mode per kamus, dll.
    PurgePluginOptionsOpsi untuk intlayerPurgeBabelPlugin: direktori basis, bendera purge/minify/optimize, daftar file komponen.
    MinifyPluginOptionsOpsi untuk intlayerMinifyBabelPlugin: direktori basis, bendera minify/optimize/editorEnabled.
    PruneContextKeadaan bersama antara analisis dan plugin pemangkasan: peta penggunaan bidang, peta nama baru, dll.
    DictionaryFieldUsageHasil penggunaan bidang untuk satu kamus: Set<string> atau 'all' ketika analisis statis tidak meyakinkan.
    NestedRenameEntryNode di pohon penggantian nama: shortName dan peta anak.
    NestedRenameMapSatu level di pohon penggantian nama: Map<string, NestedRenameEntry>.
    CompatCallerConfigKonfigurasi untuk penganalisis penggunaan yang kompatibel untuk paket compat-adapter (nama pemanggil dan opsi pemrosesan).
    ScriptBlockBlok skrip yang diekstrak dari file SFC (Vue atau Svelte): konten, offset awal, dan offset akhir.

    Fungsi Utilitas

    FungsiDeskripsi
    generateShortFieldNameMengonversi bilangan bulat (mulai dari nol) menjadi pengidentifikasi alfabet pendek: 0'a', 25'z', 26'aa', dll.
    buildNestedRenameMapFromContentMembangun NestedRenameMap secara rekursif dari nilai konten kamus yang dikompilasi, dengan menghormati struktur node Intlayer (translation, enumeration, dll.).
    createPruneContextMembuat objek PruneContext kosong baru yang diinisialisasi dengan nilai default.
    extractScriptBlocksMengekstrak blok <script> dari file SFC (Vue / Svelte) untuk analisis Babel berikutnya.
    BABEL_PARSER_OPTIONSKonstanta yang mewakili opsi parser Babel yang mencakup kerangka kerja yang didukung (React/Vue/Svelte/Angular/...).
    INTLAYER_CALLER_NAMESDaftar konstanta nama pemanggil Intlayer asli: ['useIntlayer', 'getIntlayer'].

    Contoh Penggunaan

    js
    // babel.config.js
    const {
      intlayerExtractBabelPlugin,
      intlayerPurgeBabelPlugin,
      intlayerMinifyBabelPlugin,
      intlayerOptimizeBabelPlugin,
      getExtractPluginOptions,
      getPurgePluginOptions,
      getMinifyPluginOptions,
      getOptimizePluginOptions,
    } = require("@intlayer/babel");
    
    module.exports = {
      presets: ["next/babel"],
      plugins: [
        [intlayerExtractBabelPlugin, getExtractPluginOptions()],
        [intlayerPurgeBabelPlugin, getPurgePluginOptions()],
        [intlayerMinifyBabelPlugin, getMinifyPluginOptions()],
        [intlayerOptimizeBabelPlugin, getOptimizePluginOptions()],
      ],
    };
    
    Catatan: intlayerPurgeBabelPlugin harus dideklarasikan sebelum intlayerMinifyBabelPlugin, karena yang terakhir membaca peta penggantian nama yang dibuat oleh yang pertama. Selain itu, keduanya harus didahului oleh intlayerOptimizeBabelPlugin sehingga ia dapat melihat kunci kamus sebelum panggilan useIntlayer ditulis ulang.