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

    Gói @intlayer/babel

    Gói @intlayer/babel cung cấp một tập hợp các plugin Babel chuyên dụng cho Intlayer. Các plugin này bao gồm toàn bộ chu kỳ xây dựng: trích xuất các khai báo nội dung, viết lại các lệnh gọi useIntlayer / getIntlayer thành các lệnh nhập từ điển được tối ưu hóa, cắt bỏ các trường không sử dụng và nén tên trường.

    Cài đặt

    bash
    npm install @intlayer/babel
    

    Xuất khẩu (Exports)

    Nhập khẩu (Import):

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

    Plugins

    Hàm / LớpMô tả
    intlayerExtractBabelPluginPlugin Babel trích xuất nội dung có thể dịch từ các tệp nguồn và tự động chèn các hook useIntlayer / getIntlayer. Được thiết kế để sử dụng với Next.js và các công cụ xây dựng dựa trên Babel.
    intlayerOptimizeBabelPluginPlugin Babel chuyển đổi các lệnh gọi useIntlayergetIntlayer và viết lại các lệnh nhập của chúng thành các lệnh nhập từ điển JSON được tối ưu hóa (tĩnh, động hoặc qua fetch).
    intlayerPurgeBabelPluginPlugin Babel phân tích các tệp nguồn và viết lại các tệp JSON từ điển đã biên dịch để loại bỏ các trường không sử dụng (build.purge) hoặc đổi tên chúng thành các bí danh ngắn (build.minify).
    intlayerMinifyBabelPluginPlugin Babel viết lại các tệp nguồn để sử dụng các bí danh trường ngắn được chỉ định trong giai đoạn thu nhỏ (ví dụ: content.titlecontent.a). Dựa vào intlayerPurgeBabelPlugin.
    makeFieldRenameBabelPluginHàm tạo (factory) tạo ra một plugin Babel để đổi tên các truy cập trường nội dung từ điển trong các tệp nguồn theo dictionaryKeyToFieldRenameMap được điền trong PruneContext.
    makeUsageAnalyzerBabelPluginHàm tạo tạo ra một plugin Babel để phân tích việc sử dụng useIntlayer / getIntlayer trong mã nguồn và tổng hợp dữ liệu sử dụng trường trong PruneContext chung.
    getSharedPruneContextHàm trợ giúp trả về đối tượng PruneContext chung cho thư mục gốc đã chỉ định hoặc null nếu nó chưa được khởi tạo.

    Tiện ích cấu hình plugin

    HàmMô tả
    getExtractPluginOptionsTải cấu hình Intlayer và trả về ExtractPluginOptions sẵn sàng sử dụng với intlayerExtractBabelPlugin.
    getOptimizePluginOptionsTải cấu hình Intlayer và các từ điển đã biên dịch, đồng thời trả về OptimizePluginOptions sẵn sàng sử dụng với intlayerOptimizeBabelPlugin.
    getPurgePluginOptionsTải cấu hình Intlayer và trả về PurgePluginOptions sẵn sàng sử dụng với intlayerPurgeBabelPlugin.
    getMinifyPluginOptionsTải cấu hình Intlayer và trả về MinifyPluginOptions sẵn sàng sử dụng với intlayerMinifyBabelPlugin.

    Kiểu dữ liệu

    Kiểu dữ liệuMô tả
    CompilerModeChế độ trình biên dịch: 'dev' để phát triển với hỗ trợ HMR hoặc 'build' cho các bản dựng production.
    ExtractPluginOptionsTùy chọn cho intlayerExtractBabelPlugin: danh sách tệp, cấu hình, callback onExtract, v.v.
    ExtractResultKết quả trích xuất: khóa từ điển, đường dẫn tệp, nội dung và ngôn ngữ.
    OptimizePluginOptionsTùy chọn cho intlayerOptimizeBabelPlugin: đường dẫn từ điển, chế độ nhập, bản đồ chế độ cho mỗi từ điển, v.v.
    PurgePluginOptionsTùy chọn cho intlayerPurgeBabelPlugin: thư mục gốc, cờ purge/minify/optimize, danh sách tệp component.
    MinifyPluginOptionsTùy chọn cho intlayerMinifyBabelPlugin: thư mục gốc, cờ thu nhỏ/tối ưu hóa/editorEnabled.
    PruneContextTrạng thái chia sẻ giữa các phân tích và các plugin cắt bỏ: bản đồ sử dụng trường, bản đồ đổi tên, v.v.
    DictionaryFieldUsageKết quả sử dụng trường cho một từ điển duy nhất: Set<string> hoặc 'all' khi phân tích tĩnh không đưa ra kết quả kết luận.
    NestedRenameEntryMột nút trong cây đổi tên: shortName và bản đồ các con.
    NestedRenameMapMột cấp độ trong cây đổi tên: Map<string, NestedRenameEntry>.
    CompatCallerConfigCấu hình cho bộ phân tích sử dụng tương thích cho các gói compat-adapter (tên người gọi và các tùy chọn xử lý).
    ScriptBlockKhối script được trích xuất từ tệp SFC (Vue hoặc Svelte): nội dung, độ lệch bắt đầu và kết thúc.

    Các hàm tiện ích

    HàmMô tả
    generateShortFieldNameChuyển đổi một số nguyên (bắt đầu từ số không) thành mã định danh chữ cái ngắn: 0'a', 25'z', 26'aa', v.v.
    buildNestedRenameMapFromContentXây dựng đệ quy một NestedRenameMap từ giá trị nội dung của một từ điển đã biên dịch, tôn trọng các cấu trúc nút Intlayer (translation, enumeration, v.v.).
    createPruneContextTạo một đối tượng PruneContext trống mới được khởi tạo với các giá trị mặc định.
    extractScriptBlocksTrích xuất các khối <script> từ các tệp SFC (Vue / Svelte) để phân tích Babel tiếp theo.
    BABEL_PARSER_OPTIONSHằng số đại diện cho các tùy chọn phân tích cú pháp Babel bao gồm các framework được hỗ trợ (React/Vue/Svelte/Angular/...).
    INTLAYER_CALLER_NAMESDanh sách hằng số gồm các tên người gọi Intlayer ban đầu: ['useIntlayer', 'getIntlayer'].

    Ví dụ sử dụng

    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()],
      ],
    };
    
    Lưu ý: Plugin intlayerPurgeBabelPlugin phải được khai báo trước intlayerMinifyBabelPlugin, vì plugin sau đọc bản đồ đổi tên được xây dựng bởi plugin trước. Ngoài ra, cả hai đều phải đứng sau intlayerOptimizeBabelPlugin để nó có thể nhìn thấy các khóa từ điển trước khi các lệnh gọi useIntlayer được viết lại.