Đặt câu hỏi và nhận tóm tắt tài liệu bằng cách tham chiếu trang này và nhà cung cấp AI bạn chọn
Tài liệu này đã lỗi thời, phiên bản gốc đã được cập nhật vào 25 tháng 6, 2026.
Xem tài liệu tiếng AnhLịch sử phiên bản
- "Init doc"v8.0.021/1/2026
Nội dung của trang này đã được dịch bằng AI.
Xem phiên bản mới nhất của nội dung gốc bằng tiếng AnhIf 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
Tài liệu Plugin intlayerPrune cho Vite
Plugin Vite intlayerPrune được sử dụng để thực hiện tree-shaking và loại bỏ các từ điển không được sử dụng khỏi bundle ứng dụng của bạn. Điều này giúp giảm kích thước bundle cuối cùng bằng cách chỉ bao gồm nội dung đa ngôn ngữ cần thiết.
Cách sử dụng
Như một phần của intlayer() (được khuyến nghị)
Bật pruning thông qua cấu hình Intlayer của bạn và plugin chính sẽ xử lý mọi thứ:
Sao chép mã vào clipboard
// intlayer.config.tsimport { defineConfig } from "intlayer";export default defineConfig({ build: { optimize: true, // kích hoạt cả prune và minify },});Sao chép mã vào clipboard
// vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({ plugins: [intlayer()],});Độc lập
Nếu bạn đang soạn stack plugin thủ công, intlayerPrune và intlayerMinify chia sẻ một object PruneContext phải được tạo một lần và truyền cho cả hai:
Sao chép mã vào 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), // tuỳ chọn, đọc từ cùng một context ],});Cách thức hoạt động
1. Phân tích cách sử dụng (buildStart)
Trong buildStart, plugin intlayerOptimize (cũng là một phần của intlayer()) quét mọi tệp nguồn component được liệt kê trong build.filesList. Với mỗi lệnh gọi useIntlayer('key') hoặc getIntlayer('key'), nó ghi lại chính xác những trường nào được truy cập, ví dụ:
Sao chép mã vào clipboard
const { title, description } = useIntlayer("myDict");// records: myDict → { title, description }Điều này xây dựng pruneContext.fieldUsageMap trước khi bất kỳ lệnh gọi transform nào chạy.
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 insidetranslation. - Dynamic (per-locale) dictionaries — flat
{ fieldA: ..., fieldB: ... }. Fields are pruned at the top level.
3. Các trường hợp đặc biệt
Nếu cấu trúc nội dung của một dictionary không thể được nhận dạng (ví dụ: một hình dạng lồng ghép không thông thường), nó sẽ được thêm vào pruneContext.dictionariesWithEdgeCases và được để nguyên. Một cảnh báo sẽ được ghi lại. intlayerMinify cũng bỏ qua những dictionary này.
4. Field-rename map
Khi pruning thành công, intlayerPrune cũng ghi pruneContext.dictionaryKeyToFieldRenameMap — một ánh xạ từ tên trường gốc sang các bí danh ngắn. intlayerMinify đọc bản đồ này để đổi tên các trường trong JSON đầu ra, và Babel rename pass của intlayerOptimize cập nhật các truy cập thuộc tính trong các tệp nguồn tương ứng.
Điều kiện kích hoạt
intlayerPrune được kích hoạt chỉ khi tất cả các điều kiện sau đây đều đúng:
- Lệnh Vite là
build. build.optimizelàtrue(hoặcundefined, mặc định làtruecho các bản build).build.purgelàtruetrong cấu hình Intlayer của bạn.
Nó được tự động vô hiệu hóa khi editor.enabled là true vì trình chỉnh sửa cần toàn bộ nội dung từ điển.