Ajukan pertanyaan Anda dan dapatkan ringkasan dokumen dengan merujuk halaman ini dan penyedia AI pilihan Anda
Dokumen ini sudah usang, versi dasar telah diperbarui pada 25 Juni 2026.
Buka dokumen bahasa InggrisRiwayat Versi
- "Init doc"v8.0.021/1/2026
Konten halaman ini diterjemahkan menggunakan AI.
Lihat versi terakhir dari konten aslinya dalam bahasa InggrisIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
Dokumentasi Plugin intlayerPrune untuk Vite
Plugin Vite intlayerPrune digunakan untuk melakukan tree-shaking dan memangkas kamus yang tidak terpakai dari bundle aplikasi Anda. Ini membantu mengurangi ukuran bundle akhir dengan hanya menyertakan konten multibahasa yang diperlukan.
Penggunaan
Sebagai bagian dari intlayer() (direkomendasikan)
Aktifkan pruning melalui konfigurasi Intlayer Anda dan plugin utama menangani semuanya:
Salin kode ke clipboard
// intlayer.config.tsimport { defineConfig } from "intlayer";export default defineConfig({ build: { optimize: true, // mengaktifkan pruning dan minify },});Salin kode ke clipboard
// vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({ plugins: [intlayer()],});Standalone
Jika Anda menyusun stack plugin secara manual, intlayerPrune dan intlayerMinify berbagi objek PruneContext yang harus dibuat sekali dan dilewatkan ke keduanya:
Salin kode ke clipboard
// 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), // opsional, membaca dari konteks yang sama ],});Cara Kerjanya
1. Analisis Penggunaan (buildStart)
Selama buildStart, plugin intlayerOptimize (juga bagian dari intlayer()) memindai setiap file sumber komponen yang tercantum dalam build.filesList. Untuk setiap panggilan useIntlayer('key') atau getIntlayer('key'), plugin ini mencatat dengan tepat bidang mana yang diakses, misalnya:
Salin kode ke clipboard
const { title, description } = useIntlayer("myDict");// mencatat: myDict → { title, description }Ini membangun pruneContext.fieldUsageMap sebelum panggilan transform apa pun dijalankan.
2. JSON pruning (transform, enforce: 'pre')
Ketika Vite memproses file JSON kamus yang telah dikompilasi, intlayerPrune mencegat sebelum konversi JSON → ESM bawaan Vite. Ini membaca peta penggunaan field dari pruneContext dan menghapus setiap field konten yang tidak ada dalam set penggunaan yang tercatat.
Dua bentuk konten didukung:
- Static dictionaries —
{ nodeType: "translation", translation: { en: {...}, fr: {...} } }. Field dipangkas per-locale di dalamtranslation. - Dynamic (per-locale) dictionaries — flat
{ fieldA: ..., fieldB: ... }. Field dipangkas di tingkat atas.
3. Kasus Edge Cases
Jika struktur konten kamus tidak dapat dikenali (misalnya, bentuk nested yang tidak biasa), kamus tersebut ditambahkan ke pruneContext.dictionariesWithEdgeCases dan dibiarkan tanpa diubah. Peringatan dicatat. intlayerMinify juga melewati kamus-kamus ini.
4. Field-rename map
Ketika pruning berhasil, intlayerPrune juga menulis pruneContext.dictionaryKeyToFieldRenameMap — sebuah pemetaan dari nama field asli ke alias pendek. intlayerMinify membaca peta ini untuk mengubah nama field dalam output JSON, dan Babel rename pass milik intlayerOptimize memperbarui akses properti dalam file sumber sesuai dengan itu.
Kondisi Aktivasi
intlayerPrune aktif hanya ketika semua kondisi berikut terpenuhi:
- Perintah Vite adalah
build. build.optimizeadalahtrue(atauundefined, yang secara default adalahtrueuntuk build).build.purgeadalahtruedalam konfigurasi Intlayer Anda.
Secara otomatis dinonaktifkan ketika editor.enabled adalah true karena editor memerlukan konten kamus lengkap.