Tác giả:
    Ngày tạo:2026-06-25Cập nhật lần cuối:2026-06-25

    intlayerMinify

    intlayerMinify là một plugin Vite nén các tệp JSON từ điển đã biên dịch trong quá trình build production. Nó loại bỏ tất cả khoảng trắng không cần thiết và khi kết hợp với intlayerPrune, có thể tùy chọn đổi tên các trường nội dung thành các bí danh ngắn (a, b, c, …) để giảm thiểu hơn nữa kích thước gói bundle.

    Plugin này đã được tích hợp và cấu hình tự động khi bạn sử dụng intlayer(). Bạn chỉ cần tự đăng ký thủ công nếu đang tự thiết lập cấu trúc plugin của riêng mình.

    Cách sử dụng

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

    Điều kiện kích hoạt

    intlayerMinify chỉ hoạt động khi và chỉ khi cả ba điều kiện sau đều đúng:

    1. Lệnh Vite chạy là build (không phải serve / dev).
    2. Tùy chọn build.optimizetrue (hoặc undefined, mặc định sẽ là true đối với tiến trình build).
    3. Tùy chọn build.minify được đặt là true trong cấu hình Intlayer của bạn.

    Nó tự động bị vô hiệu hóa khi editor.enabledtrue vì editor cần nội dung từ điển đầy đủ và thân thiện với người đọc.

    Những gì được nén

    Plugin nhắm vào hai vị trí từ điển (được phân giải từ intlayer.system):

    • dictionariesDir — các từ điển tĩnh cho tất cả các locale (ví dụ: .intlayer/dictionaries/*.json)
    • dynamicDictionariesDir — các từ điển động cho mỗi locale
    Các từ điển sử dụng chế độ fetch (fetchDictionariesDir) sẽ không bao giờ bị nén vì chúng được cung cấp từ một API từ xa tại thời điểm chạy bằng cách sử dụng các tên trường gốc. Việc đổi tên các trường sẽ tạo ra sự không khớp giữa phản hồi của máy chủ và các thuộc tính được truy cập phía client.

    Mã hóa tên trường (Thu nhỏ thuộc tính)

    Khi intlayerPrune đã phân tích mã nguồn và cập nhật dữ liệu cho pruneContext.dictionaryKeyToFieldRenameMap, intlayerMinify cũng đổi tên các trường nội dung thành các bí danh ngắn. Ví dụ:

    json
    // trước khi đổi{ "key": "myDict", "content": { "title": "Hello", "description": "World" } }// sau khi đổi (đã được mã hóa){ "key": "myDict", "content": { "a": "Hello", "b": "World" } }

    Các thuộc tính truy cập trong tệp nguồn tương ứng được đổi tên bằng bước xử lý Babel bên trong intlayerOptimize, do đó hành vi runtime không bị thay đổi.

    Các trường nội bộ của Intlayer (nodeType, translation, v.v.) không bao giờ bị đổi tên.

    Các từ điển trường hợp đặc biệt (Edge-cases)

    Các từ điển được gắn cờ trong pruneContext.dictionariesWithEdgeCases (phát hiện bất thường về cấu trúc trong giai đoạn prune) sẽ được bỏ qua hoàn toàn — không nén hay mã hóa — để tránh gửi dữ liệu bị hỏng.

    Nhóm đủ điều kiện (Bộ sưu tập / Biến thể / Bản ghi meta)

    Đối với các từ điển có mảng qualifierTypes (bộ sưu tập, biến thể và bản ghi meta), plugin giữ nguyên mảng qualifierTypes và bản đồ phụ meta một cách nguyên văn. Chỉ có các mục nhập content bị mã hóa tên trường. Các khóa phức hợp (được sử dụng để đối sánh bộ chọn tại thời điểm chạy) không bao giờ bị can thiệp.