Dùng Bun.js đi, đừng dùng NPM nữa!

Có bao giờ bạn “phát bực” vì chờ đợi npm install
chạy mòn mỏi, lock file thì khó đọc, mỗi lần merge code là loạn xạ conflict? Giờ là lúc Bun.js xuất hiện như giải pháp “tất cả trong một” cho developer: từ runtime, package manager, test runner cho tới bundler, nay đã tung ra phiên bản 1.2 với vô số nâng cấp cực “xịn”, hứa hẹn đánh bật Node.js + NPM khỏi tim bạn!
Trước khi đến với các tính năng mới trong bun. Đây là hướng dẫn cài đặt:
npm i -g bun
Dưới đây là loạt tính năng “căng đét” trong Bun.js 1.2:
1. Tương thích Node.js “tận răng”
- Bun 1.2 hỗ trợ thêm nhiều module chuẩn Node:
dgram
,http2
,server
,cluster
… - Express.js chạy trên Bun có thể đáp ứng gấp 3 lần request so với Node.js.
- “Drop-in replacement” cho Node: bạn có thể đổi
node
thànhbun
mà không cần sửa quá nhiều code.
Code ví dụ chạy Express trên Bun
// main.ts
import express from 'express';
import { config } from 'dotenv';
config();
const port = process.env.PORT || 3001;
const app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.get('/', (req, res) => {
res.send('Hello from Bun + Express!');
});
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
Sau đó bạn có thể chạy file main.ts
này với:
bun server.ts
2. API S3 tích hợp sẵn
- Hỗ trợ đọc/ghi file qua S3 (cả AWS S3, Google GC3, Cloudflare R2, DigitalOcean Spaces, MinIO…).
- Tốc độ tải file có thể nhanh hơn gấp 5 lần so với các thư viện Node.js phổ biến.
- Cú pháp tương tự xử lý file nội bộ.
Code ví dụ với Bun S3
import { s3, serve } from 'bun';
const file = s3.file('folder/my-file.txt');
// file này hành xử như Blob, có thể đọc text(), arrayBuffer() hoặc trả về response
// Up file sang server khác qua fetch()
const response = await fetch('https://example.com/upload', {
method: 'POST',
body: file,
});
// Hoặc tự serve file qua HTTP
serve({
port: 8080,
fetch(req) {
return new Response(file, {
headers: { 'Content-Type': 'text/plain' },
});
},
});
3. Bun SQL – Native Postgres Client
- Bun 1.2 mang tới client Postgres “built-in”: không cần cài thêm driver, tốc độ đọc row nhanh hơn ~50%.
- “Tagged template literals” ngăn SQL injection “by design”.
Code ví dụ với Bun SQL (Postgres)
import sql from 'bun:sql';
await sql`
CREATE TABLE IF NOT EXISTS messages (
id SERIAL PRIMARY KEY,
content TEXT NOT NULL
);
`;
await sql`
INSERT INTO messages (content)
VALUES ('Xin chào Bun 1.2!')
`;
const rows = await sql`SELECT * FROM messages;`;
console.log(rows);
4. Text-based Lock File dạng JSONC
- Thay thế lock file nhị phân bằng JSONC (JSON + comment + trailing commas).
- Dễ đọc, dễ review trên pull request, giảm “đau tim” khi merge code.
- Cài package cũng nhanh hơn hẳn: “bun install” cache thông minh, “tốc biến” so với
npm install
.
Code ví dụ cài package
# Tạo package.json nếu chưa có
bun init
# Cài package
bun install react react-dom
# Tự sinh file bun.lock chứa thông tin dependencies dạng JSONC
5. HTML Imports – Rút gọn chain front-end
- HTML Imports cho phép bạn import 1 file HTML (có sẵn CSS, JS, React, Tailwind…).
- Bun sẽ tự động bundle, minify, transpile TypeScript/JSX…
- Biến việc thiết lập build tool “phức tạp” thành 1 câu lệnh duy nhất.
Code ví dụ HTML Import
import page from './index.html';
// page lúc này đã được Bun xử lý, sẵn sàng cho SSR hoặc trả về client
serve({
port: 3000,
async fetch(req) {
// Có thể render string HTML, hoặc combine với template engine
return new Response(page, {
headers: { 'Content-Type': 'text/html' },
});
},
});
Tốc Độ Cài Đặt: NPM vs Bun
Công cụ | Thời Gian Cài 100 Gói |
---|---|
NPM | ~ 40s – 1’ phút |
Bun | ~ 10s – 15s |
(Bảng trên chỉ là minh hoạ mang tính chất “đong vui”. Tốc độ thực tế còn tuỳ máy!)
Lời Kết
Bun.js 1.2 đem lại cảm giác “ơn giời” cho những ai phát “chán” với Node.js + NPM lề mề: từ runtime “trâu bò” tương thích Node, cài package “thần tốc”, lock file dễ quản lý, cho tới S3 & SQL client tích hợp, xử lý bundling front-end nhẹ nhàng như lông hồng.
Nếu muốn:
- Cài gói siêu nhanh.
- Bớt đau đầu khi review lock file.
- Tận dụng sẵn Postgres, S3, HTML Imports quá tiện.
- Chạy Express vẫn nhanh gấp nhiều lần Node…
Thì bạn nhất định phải thử Bun.js ngay! Hãy nói lời chia tay “npm install” dài dằng dặc, nâng tầm dự án của bạn với Bun.js 1.2 – “Dùng Bun.js đi, đừng dùng NPM nữa!”