0

🚀 Xây dựng Base Project với React 19, Tailwind v4, ShadCN và Vite - Phần 1: Giới thiệu & Setup Dự Án

⚡ Năm 2025 rồi, đừng để mình bị outdate! Công nghệ web đang thay đổi chóng mặt: React 19, Tailwind v4, Shadcn, Vite đều có những cải tiến đáng kể giúp code sạch hơn, build nhanh hơn, UI/UX mượt mà hơn.

Chả là ở công ty mình vừa được giao dựng một dự án từ đầu, thế nên nhân dịp này có công nghệ gì mới mình áp dụng hết đồng thời tổng hợp lại những thứ hay ho vừa học vừa làm, chia sẻ với anh em để cùng update kiến thức nhé!

Chắc hẳn anh em cũng đã gặp những tình huống như này?

  • Code bị lặp lại quá nhiều: Không có bộ common component, mỗi màn một kiểu, copy-paste code khắp nơi, muốn sửa một thứ lại phải chỉnh cả tá file.
  • Viết component quá abstract: Props truyền vào siêu nhiều nhưng khả năng tái sử dụng kém, mỗi lần customize lại phải sửa từng component.
  • Không có chuẩn UI/UX thống nhất: Button, input, dialog, spacing mỗi màn một kiểu → sửa giao diện rất cực...

🔥 Vì thế, trong project này, mình kết ẻm Shadcn vãi. Nó giúp:

  • Có sẵn common component theo chuẩn Radix UI, dễ tùy chỉnh, mở rộng.
  • Tích hợp Tailwind, giúp code UI nhanh, không cần viết CSS tay nhiều.
  • Code gọn, không bị over-abstracted, dễ maintain.

📢 Mới vài tuần trước, lão đầu trọc đeo kính ShadCN đã cập nhật để tích hợp với Tailwind v4. Vậy nên, hôm nay chúng ta cài đặt base project với ShadCN mới nhất nhé!

Hôm nay chúng ta sẽ làm gì?

✅ Cài đặt Vite + React 19 + TypeScript

✅ Cấu hình Tailwind CSS v4

✅ Add 1 vài component với ShadCN

Bắt đầu thôi! Ở dưới comment mình có để link hướng dẫn setup của shadcn nhé ae, ae lấy code thêm từ đó nhé 🔥


Bước 1: Tạo Project với Vite

Trước tiên, đảm bảo bạn đã cài Node.js 20+ và một package manager như pnpm, yarn hoặc npm.

Tạo project mới với Vite:

npm create vite@latest

Hiện tại, Vite đang ở bản 6.3.1, chọn Yes → đặt tên project → chọn React → chọn TypeScript.

Bước 2: Cài đặt TailwindCSS v4

Cài đặt TailwindCSS:

npm install tailwindcss @tailwindcss/vite

Xóa hết nội dung trong src/index.css và thêm vào:

🔥 Tailwind v4 đã sẵn sàng để chiến!

Bước 3: Cấu hình TypeScript Paths

Vite hiện tại chia cấu hình TypeScript thành ba file. Chỉnh sửa tsconfig.json và tsconfig.app.json như sau:

Thêm alias @/ vào tsconfig.json, giờ import file chỉ cần @/components/Button thay vì src/components/Button nữa ;v!

Bước 4: Cấu hình Vite để hỗ trợ alias

Cài thêm @types/node để tránh lỗi

npm install -D @types/node

Mở vite.config.ts và cập nhật alias @/:

🔥 Vậy là project đã có alias để dễ quản lý file!

Bước 5: Setup ShadCN

Chạy lệnh sau để khởi tạo ShadCN:

npx shadcn@latest init

Hiện tại, bản mới nhất là canary.11 → Chọn base color là neutral & chọn use-force.

Sau khi setup, trong project sẽ có thêm file components.json giúp quản lý cấu trúc component.

Bước 6: Thêm thử 1 Component Button

Khác với các thư viện UI khác, ShadCN chỉ cài những component nào bạn cần, và bạn toàn quyền có thể custom nó. Chạy lệnh sau để thêm Button:

npx shadcn@latest add button

Sau khi chạy xong, code sẽ có file mới: src\components\ui\button.tsx

🔥 Giờ thử dùng Button trong App.tsx nhé!

Mở src/App.tsx và update code:

🔥 Lên hình như này là OK rồi nha anh em! 🎉

🎉 Kết luận

Vậy là bạn đã hoàn thành Phần 1 của series:

✅ Cài đặt Vite + React 19 + Tailwind v4

✅ Cấu hình TypeScript alias và Vite

✅ Thêm component UI đầu tiên với ShadCN

Link github: https://github.com/ngocla99/project-starter/tree/main/reactjs-19

Ở Phần 2, chúng ta sẽ tiếp tục với Prettier, ESLint và Import Sorted để giữ code sạch đẹp.

💬 Mình thấy dùng Shadcn cứ bị phê, còn ae thì sao?


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí