Setup React Typescript với Vite & ESLint
Châm ngôn của mình là học để kiếm tiền.
Vì thế mình build các khóa học của mình để giúp anh em tiến bộ nhanh hơn x10 lần , để kiếm được nhiều tiền hơn
- 🏆 React.js Super: Trở thành React.js Developer trong 7 ngày với mức thu nhập 20 triệu/tháng
- 🏆 Node.js Super: Giúp bạn học cách phân tích, thiết kế, deploy 1 API Backend bằng Node.js
- 🏆 Next.js Super: Mình sẽ chia sẻ từ A-Z kiến thức về Next.js, thứ giúp mình kiếm hơn 1 tỉ/năm
- 🏆 Deploy Super: CI/CD Deploy tự động React, Node, Next lên VPS qua Github Actions kết hợp Telegram Bot
Lần trước mình có hướng dẫn mọi người về cách setup một dự án React từ A-Z bằng Webpack & Typescript & Babel & ESLint & Prettier rồi. Hôm nay mình sẽ hướng dẫn mọi người làm với Vite nhé.
Vite dạo gần đây đang là xu hướng, vì cách setup đơn giản và tốc độ thực thi nhanh hơn nhiều so với Webpack.
🥇Cấu trúc thư mục ReactJs Vite
Dưới đây là cấu trúc thư mục hoàn chỉnh của dự án ReactJs Typescript Vite ESLint Prettier
📦react-app
┣ 📂dist
┣ 📂public
┃ ┗ 📜vite.svg
┣ 📂src
┃ ┣ 📂assets
┃ ┃ ┗ 📜react.svg
┃ ┣ 📜App.css
┃ ┣ 📜App.tsx
┃ ┣ 📜index.css
┃ ┣ 📜main.tsx
┃ ┗ 📜vite-env.d.ts
┣ 📜.editorconfig
┣ 📜.eslintignore
┣ 📜.eslintrc.cjs
┣ 📜.gitignore
┣ 📜.prettierignore
┣ 📜.prettierrc
┣ 📜index.html
┣ 📜package-lock.json
┣ 📜package.json
┣ 📜tsconfig.json
┣ 📜tsconfig.node.json
┗ 📜vite.config.ts
- Thư mục
dist
: Thư mục chứa các file build - Thư mục
public
: Chứa fileindex.html
và các file liên quan nhưfavicon.ico
,robots.txt
,... - Thư mục
src
: Chứa mã nguồn chính của chúng ta - Thư mục
src/assets
: Chứa media, css (fileApp.css
vàindex.css
ở trên mình để nguyên xi khi mới tạo, anh em có thể đưa vàoassets/styles
cho gọn nhé), fonts - Còn lại những file config sẽ được mình giới thiệu ở những phần dưới
🥇Bước 1 - Khởi tạo dự án Vite
💡 Mẹo:
Vite yêu cầu Node version 14.18+, 16+ để có thể hoạt động ổn định. Tuy nhiên một số template yêu cầu version cao hơn, vậy nên nếu nó warning thì anh em update nodejs lên version cao hơn nhé.
Các bạn có thể dùng npm
hoặc yarn
hoặc pnpm
đều được, ở đây mình dùng npm
cho đơn giản.
Với npm
npm create vite@latest
Với Yarn
yarn create vite
Với PNPM
pnpm create vite
Sau khi chạy thì nó sẽ yêu cầu nhập tên dự án
Need to install the following packages:
create-vite@4.1.0
Ok to proceed? (y) y
✔ Project name: … react-app
Tiếp theo là chọn Framework
✔ Select a framework: › React
Chọn template, ở đây mình chọn TypeScript + SWC
, SWC sẽ thay thế Babel cho việc biên dịch code Typescript/Javascript. SWC có tốc độ nhanh hơn 20 lần khi so với Babel
✔ Select a variant: › TypeScript + SWC
Tiếp theo là thư mục vừa được Vite tạo
cd react-app
Cài đặt các package
npm i
🥇Bước 2 - Cài các package liên quan ESLint và Prettier
Sau khi xong bước 1 rồi thì mặc định Vite đã giúp chúng ta cấu hình cơ bản cho ESLint và TypeScript rồi, nhưng để tiện hơn cho việc code thì chúng ta sẽ cài thêm 1 số package nữa.
Chạy câu lệnh sau
npm i prettier eslint-config-prettier eslint-plugin-prettier -D
Đây là những thứ chúng ta cài
prettier
: code formatter chínheslint-config-prettier
: Bộ config ESLint để vô hiệu hóa các rule của ESLint mà xung đột với Prettier.eslint-plugin-prettier
: Dùng thêm 1 số rule Prettier cho ESLint
🥇Bước 3 - Config ESlint để chuẩn hóa code
Mở file eslint.config.js
lên
Thêm đoạn giá trị này vào mảng ignores
, mục đích là mình không muốn ESLint check file vite.config.ts
'vite.config.ts'
Các bạn import cái này vào đầu file eslint.config.js
import eslintPluginPrettier from 'eslint-plugin-prettier'
Thêm đoạn code sau vào object plugins
prettier: eslintPluginPrettier
Thêm đoạn code sau vào object rules
để thêm các rule của Prettier
'prettier/prettier': [
'warn',
{
arrowParens: 'always',
semi: false,
trailingComma: 'none',
tabWidth: 2,
endOfLine: 'auto',
useTabs: false,
singleQuote: true,
printWidth: 120,
jsxSingleQuote: true
}
]
🥇Bước 4 - Config Prettier để format code
Tạo file .prettierrc
trong thư trong thư mục root với nội dung dưới đây
{
"arrowParens": "always",
"semi": false,
"trailingComma": "none",
"tabWidth": 2,
"endOfLine": "auto",
"useTabs": false,
"singleQuote": true,
"printWidth": 120,
"jsxSingleQuote": true
}
Mục đích là cấu hình prettier. Anh em nên cài Extension Prettier - Code formatter
cho VS Code để nó hiểu nhé.
Tiếp theo Tạo file .prettierignore
ở thư mục root
Mục đích là Prettier bỏ qua các file không cần thiết
node_modules/
dist/
🥇Bước 5 - Config editor để chuẩn hóa cấu hình editor
Tạo file .editorconfig
ở thư mục root
Mục đích là cấu hình các config đồng bộ các editor với nhau nếu dự án có nhiều người tham gia.
Để VS Code hiểu được file này thì anh em cài Extension là EditorConfig for VS Code
nhé
[*]
indent_size = 2
indent_style = space
🥇Bước 6 - Cấu hính alias cho tsconfig.json
Việc thêm alias vào file tsconfig.json
sẽ giúp VS Code hiểu mà tự động import giúp chúng ta. Lưu ý cái này chỉ giúp
Thêm đoạn này vào compilerOptions
trong file tsconfig.json
"baseUrl": ".",
"paths": {
"~/*": ["src/*"]
}
file tsconfig.json
của bạn sẽ có kiểu như dưới đây
{
"files": [],
"references": [{ "path": "./tsconfig.app.json" }, { "path": "./tsconfig.node.json" }],
"compilerOptions": {
"baseUrl": ".",
"paths": {
"~/*": ["src/*"]
}
}
}
Ý nghĩa của đoạn này là ta có thể import Login from '~/pages/Login'
thay vì import Login from '../../pages/Login'
. Ngắn gọn và dễ nhìn hơn nhiều!
🥇Bước 7 - Cấu hình alias cho vite vite.config.ts
Cài package @types/node
để sử dụng node js trong file ts không bị lỗi
npm i @types/node -D
Cấu hình alias và enable source map ở file vite.config.ts
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react-swc'
import path from 'path'
// https://vitejs.dev/config/
export default defineConfig({
plugins: [react()],
server: {
port: 3000
},
css: {
devSourcemap: true
},
resolve: {
alias: {
'~': path.resolve(__dirname, './src')
}
}
})
🥇Bước 8 - Cập nhật script
cho package.json
Mở file package.json
lên, thêm đoạn script
dưới vào
"scripts": {
//...
"lint:fix": "eslint . --fix",
"prettier": "prettier --check \"src/**/(*.tsx|*.ts|*.css|*.scss)\"",
"prettier:fix": "prettier --write \"src/**/(*.tsx|*.ts|*.css|*.scss)\""
}
🥇Câu lệnh để chạy dự án
Đến đây là xong rồi đó, để chạy trong môi trường dev thì chúng ta sẽ chạy bằng câu lệnh npm run dev
.
Nếu muốn build thì npm run build
Ngoài ra còn có một số câu lệnh như
- Preview kết quả build bằng câu lệnh
npm run preview
- Kiểm tra dự án có bị lỗi gì liên quan ESLint không:
npm run lint
- Tự động fix các lỗi liên quan ESLint (không phải cái gì cũng fix được, nhưng fix cũng nhiều):
npm run lint:fix
- Kiểm tra dự án có bị lỗi gì liên quan Prettier không:
npm run prettier
- Tự động fix các lỗi liên quan Prettier:
npm run prettier:fix
Chúc các bạn thành công nhen!
👉 Kiến thức trong khóa học Next.js này đã giúp mình kiếm hơn 1 tỉ đồng/năm
Phew! Cuối cùng bạn cũng đã đọc xong. Bài viết này có hơi dài một tí vì mình muốn nó đầy đủ nhất có thể 😅
Website bạn đang đọc được viết bằng Next.js TypeScript và tối ưu từng chi tiết nhỏ như SEO, hiệu suất, nội dung để đảm bảo bạn có trải nghiệm tốt nhất.
Với lượt view trung bình là 30k/tháng (dù website rất ít bài viết). Website này đem lại doanh thu 1 năm vừa qua là hơn 1 tỉ đồng
Đó chính là sức mạnh của SEO, sức mạnh của Next.js.
Mình luôn tin rằng kiến thức là chìa khóa giúp chúng ta đi nhanh nhất.
Mình đã dành hơn 6 tháng để phát triển khóa học Next.js Super | Dự án quản lý quán ăn & gọi món bằng QR Code. Trong khóa này các bạn sẽ được học mọi thứ về framework Next.js, các kiến thức từ cơ bản cho đến nâng cao nhất, mục đích của mình là giúp bạn chinh phục mức lương 25 - 30 triêu/tháng
Nếu bạn cảm thấy bài viết này của mình hữu ích, mình nghĩ bạn sẽ thích hợp với phong cách dạy của mình. Không như bài viết này, khóa học là sự kết hợp giữa các bài viết, video, bài tập nhỏ và dự án lớn có thể xin việc được ngay. Học xong mình đảm bảo bạn sẽ lên tay ngay. 💪🏻