Babel 8.1.0 — bản minor đầu tiên kể từ Babel 8.0.0 — đã phát hành ngày 2/11/2026, thêm hỗ trợ biên dịch import file dạng bytes và text, namespace lọc theo export, và source map range mapping thử nghiệm gọn hơn. Tuy nhiên, theo ghi chú phát hành trên GitHub, cả ba plugin transform mới đã vô tình bị sót khỏi bản 8.1.0 và sẽ được phát hành lại trong bản 8.1.1.
Babel là trình biên dịch JavaScript quen thuộc đứng sau mỗi lần bạn chạy lệnh build. Bản này hé lộ hướng đi tiếp theo của ngôn ngữ, với vài đề xuất cú pháp còn đang thử nghiệm.
Import file dưới dạng bytes và text
Hai đề xuất Import Bytes (Stage 2.7) và Import Text (Stage 3) xây dựng trên import attributes: cho phép import bất kỳ file nào dưới dạng bytes thô hoặc chuỗi văn bản. Ví dụ: import logo from "./logo.png" with { type: "bytes" }; cho Uint8Array, còn import shader from "./shader.glsl" with { type: "text" }; cho chuỗi. Babel tự biên dịch theo nền tảng đích: trình duyệt dùng fetch rồi .bytes(), Node.js dùng fs.readFileSync. Lưu ý: hai plugin @babel/plugin-proposal-bytes-modules và @babel/plugin-proposal-text-modules đã bị sót khỏi 8.1.0, phải chờ bản 8.1.1.
Namespace chỉ chứa export bạn cần
Đề xuất deferred re-exports (Stage 2.7) mang tới “filtered namespaces”: import { parse, format } as myLib from "my-library"; tạo namespace object chỉ chứa đúng các export được liệt kê. Nhờ đó bundler loại bỏ an toàn phần không dùng — tree-shaking hiệu quả hơn. Dynamic import cũng lọc được: const { format } = await import("my-library", { exports: ["format"] });. Plugin @babel/plugin-proposal-filtered-namespaces cũng phải chờ 8.1.1, và hiện chưa kết hợp được với import defer hay export defer.
Source map gọn hơn nhờ range mappings
Source map truyền thống mã hóa từng điểm tương ứng giữa code đã biên dịch và code gốc, nên file rất lớn. Đề xuất range mappings (Stage 3) cho phép một mapping bao phủ cả một đoạn code, nhờ đó source map nhỏ và chính xác hơn. Bật bằng tùy chọn generatorOpts.sourceMapRanges: true trong cấu hình Babel. Còn thử nghiệm: chỉ bật khi mọi công cụ sau Babel, kể cả devtools, đều hỗ trợ; nó bị bỏ qua khi dùng inputSourceMap.
Mới chỉ ở mức parse: deferred re-exports, import.sync, structs
Parser của Babel 8.1.0 đã đọc được thêm ba đề xuất mới, dù chưa biên dịch được chúng: export defer — module re-export chỉ tải khi binding được import thật; import.sync (Stage 2) — tải và chạy module đồng bộ khi runtime cho phép; và structs (Stage 2) — dạng khai báo giống class nhưng có layout cố định, không thêm được thuộc tính mới sau khi tạo, chỉ struct thường.
@babel/eslint-plugin có sẵn hai cấu hình
Plugin ESLint của Babel giờ cung cấp configs.recommended và configs.all, dùng kèm @eslint/js. Hai cấu hình này thay một số rule gốc của ESLint bằng phiên bản tương thích với cú pháp thử nghiệm mà Babel hỗ trợ. Lưu ý: bạn vẫn phải tự khai báo plugin và parser.
Điều này có ý nghĩa gì với bạn
Với dự án đang dùng Babel 8, đây là lần nâng cấp an toàn để đón đầu cú pháp JavaScript mới. Nhưng ba plugin mới chưa có mặt — hãy chờ 8.1.1. Các đề xuất Stage 2 như import.sync hay structs chỉ nên thử trong dự án phụ.
Bài viết liên quan
- TypeScript 7.1 Beta ra mắt: trình biên dịch Go nhanh hơn nữa, API mới cho công cụ và target es2026 ổn định
- Rspack 2.3 ra mắt: parser SWC Next nhanh gấp 3 lần, build nhẹ RAM hơn 30%
- JavaScript: chạy nhiều promise cùng lúc bằng Promise.allSettled, một lỗi không làm hỏng cả lô
Câu hỏi thường gặp
Babel 8.1.0 có phải bản vá bảo mật không?
Không, đây là bản minor tính năng, không sửa lỗ hổng bảo mật nào.
Vì sao không cài được plugin bytes-modules?
Vì ba plugin transform mới bị sót khỏi bản 8.1.0; nhóm Babel sẽ phát hành lại chúng trong bản 8.1.1.
Có nên bật sourceMapRanges ngay không?
Chỉ khi mọi công cụ trong pipeline đều hỗ trợ range mappings.
💬 Tin này ảnh hưởng tới dự án của bạn thế nào? Chia sẻ góc nhìn của bạn trong phần bình luận — mình đọc hết và sẽ tổng hợp những ý hay nhất.
Nguồn tham khảo
- Babel — 8.1.0 Released: bytes and text imports, source map range mappings, and ESLint configs — https://v8.babeljs.io/blog/2026/11/02/8.1.0
- Babel trên GitHub — Release v8.1.0 — https://github.com/babel/babel/releases/tag/v8.1.0
