Trong bài viết này chúng ta sẽ học cách setup một dự án ReactJs hoàn chỉnh với Webpack, Typescript kết hợp Babel, Prettier, ESLint
Repository dự án: https://github.com/phamhongduc-dev/React-Webpack-Typescript
🥇 Cấu trúc thư mục full
Dưới đây là cấu trúc thư mục hoàn chỉnh của dự án ReactJs Typescript Webpack Babel ESLint
-
Thư mục dist
: Thư mục chứa các file build
-
Thư mục public
: Chứa file index.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, fonts
-
Còn lại những file config sẽ được mình giới thiệu ở những phần dưới
🥇 Khởi tạo dự án React
🥈 Khởi tạo một dự án nodejs
Khởi tạo bằng yarn
hoặc npm
tùy mọi người, nhưng mình khuyến khích mọi người dùng yarn
vì yarn
nhanh hơn, ít lỗi hơn.
Hoặc
🥈 Cài các package cần thiết
Cài đặt React vào dependencies
Cài type cho React vào devDependencies
Cài đặt Webpack
Cài đặt Babel
Cài đặt các loader và plugins bổ trợ
-
clean-webpack-plugin
: Dọn dẹp thư mục build
-
compression-webpack-plugin
: Nén gzip, brotli file build
-
copy-webpack-plugin
: Copy các file trong thư mục public
vào thư mục dist
-
css-loader
: import css trong dự án
-
css-minimizer-webpack-plugin
: minify css
-
dotenv-webpack
: Giúp dùng được các biến môi trường trong file .env
-
file-loader
: import ảnh, font trong dự án
-
html-webpack-plugin
: Tự động thêm script
và style
tag vào file html
-
mini-css-extract-plugin
: Tách css ra thành file riêng khi build thay vì đưa vào file js
-
sass
: Giúp dùng sass cho dự án
-
sass-loader
: Cũng giúp dùng Sass cho dự án, phải cài cả 2 sass sass-loader
-
serve
: Giúp preview file build
-
webpack-bundle-analyzer
: Phân tích kích thước file build
Cài đặt ESLint và Prettier
🥇 Config dự án
🥈 Tạo file public/index.html
🥈 Thêm file ảnh public/icon.png
vào
🥈 Tạo file .babelrc
ở thư mục root
Mục đích là chứa các preset babel
🥈 Tạo file .browserslistrc
ở thư mục root
Mục đích là cấu hình target trình duyệt mà dự án chúng ta hỗ trợ
🥈 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é
🥈 Tạo file .env
ở thư mục root
Mục đích là chứa các biến môi trường dùng trong dự án React của chúng ta
🥈 Tạo file .eslintrc.js
ở thư mục root
Mục đích là chứa cấu hình ESLint
🥈 Tạo file .eslintignore
ở thư mục root
Mục đích là ESLint bỏ qua những file không cần thiết
🥈 Tạo file .gitignore
ở thư mục root
Mục đích là Git bỏ qua những file không cần thiết
🥈 Tạo file .prettierrc
ở thư mục root
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é.
🥈 Tạo file .prettierignore
ở thư mục root
Mục đích là Prettier bỏ qua các file không cần thiết
🥈 Tạo file tsconfig.json
ở thư mục root
Mục đích là cấu hình Typescript cho dự án chúng ta
🥈 Mở file package.json
lên, thêm đoạn script
dưới vào
🥈 Tạo file webpack.config.js
tại thư mục root
Mục đích là cấu hình webpack cho dự án ReactJs Typescript.
Chi tiết mình có giải thích hết trong file cấu hình này, các bạn đọc là sẽ hiểu nhé.
File cấu hình này áp dụng cho 2 môi trường là development và production luôn.
🥈 Thêm code React vào
src/App.tsx
src/index.tsx
Thêm file src/react-app-env.d.ts
để import ảnh không bị typescript bắt lỗi.
Nếu sau này có thêm những định dạng video, ảnh khác thì khai báo thêm vào trong file này
Tạo file src/assets/styles/app.css
Tạo file src/assets/styles/app.scss
Tạo thêm folder images
nằm trong src/assets
. Thêm tấm ảnh vào để test luôn.
Ở đây mình thêm react.svg
vào
🥇 Chạy thử
🥈 Môi trường Dev
Chạy yarn dev
để xem thành quả
🥈 Build dự án
Để build dự án thì chạy yarn build
Nó sẽ xuất hiện thư mục dist
với cấu trúc như dưới đây
🥈 Preview dự án React sau khi build
Chạy yarn preview
để preview nhé, yêu cầu là trong thư mục dist
phải có bản build mới preview được
🥈 Build dự án kèm phân tích file build
Để phân tích file build thì ae chỉ cần chạy câu lệnh yarn build:analyze
Nhìn vào đây rất dễ để biết được thư viện nào đang chiếm kích thước nhiều
🥈 Kiểm tra ESLint và Prettier
-
Kiểm tra dự án có bị lỗi gì liên quan ESLint không: yarn 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): yarn lint:fix
-
Kiểm tra dự án có bị lỗi gì liên quan Prettier không: yarn prettier
-
Tự động fix các lỗi liên quan Prettier: yarn prettier:fix
Nguồn bài viết: https://duthanhduoc.com