@cyberskill/shared 1.75.0 → 1.77.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -10
- package/dist/configs/config.util.cjs +1 -1
- package/dist/configs/config.util.js +1 -1
- package/dist/configs/graphql-codegen/graphql-codegen.util.cjs +1 -1
- package/dist/configs/graphql-codegen/graphql-codegen.util.js +1 -1
- package/dist/configs/graphql-codegen/index.cjs +1 -1
- package/dist/configs/graphql-codegen/index.js +1 -1
- package/dist/configs/index.cjs +1 -1
- package/dist/configs/index.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/nodejs/cli/cli.util.cjs +1 -1
- package/dist/nodejs/cli/cli.util.js +1 -1
- package/dist/nodejs/cli/index.cjs +1 -1
- package/dist/nodejs/cli/index.js +1 -1
- package/dist/nodejs/command/command.util.cjs +1 -1
- package/dist/nodejs/command/command.util.js +1 -1
- package/dist/nodejs/command/index.cjs +1 -1
- package/dist/nodejs/command/index.js +1 -1
- package/dist/nodejs/index.cjs +1 -1
- package/dist/nodejs/index.js +1 -1
- package/dist/nodejs/package/index.cjs +1 -1
- package/dist/nodejs/package/index.js +1 -1
- package/dist/nodejs/package/package.util.cjs +1 -1
- package/dist/nodejs/package/package.util.js +1 -1
- package/dist/nodejs/path/index.cjs +1 -1
- package/dist/nodejs/path/index.js +1 -1
- package/dist/nodejs/path/path.constant.cjs +1 -1
- package/dist/nodejs/path/path.constant.js +1 -1
- package/dist/nodejs/path/path.util.cjs +1 -1
- package/dist/nodejs/path/path.util.js +1 -1
- package/dist/nodejs/storage/index.cjs +1 -1
- package/dist/nodejs/storage/index.js +1 -1
- package/dist/nodejs/storage/storage.util.cjs +1 -1
- package/dist/nodejs/storage/storage.util.js +1 -1
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/vitest/index.cjs +1 -1
- package/dist/react/vitest/index.js +1 -1
- package/dist/react/vitest/vitest.unit.cjs +1 -1
- package/dist/react/vitest/vitest.unit.js +1 -1
- package/package.json +2 -2
- package/public/wiki/convention.md +193 -0
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# Hướng Dẫn Sử Dụng Dự Án
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+

|
|
5
|
+
|
|
6
|
+
<!-- Mục lục -->
|
|
7
|
+
|
|
8
|
+
- [Yêu Cầu](#yêu-cầu)
|
|
9
|
+
- [Cài Đặt](#cài-đặt)
|
|
10
|
+
- [Chạy Dự Án](#chạy-dự-án)
|
|
11
|
+
- [Chạy ở môi trường development với Docker](#chạy-ở-môi-trường-development-với-docker)
|
|
12
|
+
- [Chạy ở môi trường development (Local)](#chạy-ở-môi-trường-development-local)
|
|
13
|
+
- [Các Script & Ý Nghĩa](#các-script--ý-nghĩa)
|
|
14
|
+
- [Quy Ước Viết Code & Đặt Tên](#quy-ước-viết-code--đặt-tên)
|
|
15
|
+
- [Quy Ước Đặt Tên](#quy-ước-đặt-tên)
|
|
16
|
+
- [Quy Ước Đặt Tên Chung](#quy-ước-đặt-tên-chung)
|
|
17
|
+
- [Quy Ước Tiền Tố Trong TypeScript](#quy-ước-tiền-tố-trong-typescript)
|
|
18
|
+
- [Quy Ước Đặt Tên Type Trong GraphQL](#quy-ước-đặt-tên-type-trong-graphql)
|
|
19
|
+
- [Quy Ước Đặt Tên Biến Môi Trường](#quy-ước-đặt-tên-biến-môi-trường)
|
|
20
|
+
- [Quy Ước Khi Import](#quy-ước-khi-import)
|
|
21
|
+
- [Quy Ước Viết Code](#quy-ước-viết-code)
|
|
22
|
+
- [Quy Ước Đặt Commit Message](#quy-ước-đặt-commit-message)
|
|
23
|
+
- [Quy Trình Làm Việc Với Git](#quy-trình-làm-việc-với-git)
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Yêu Cầu
|
|
28
|
+
|
|
29
|
+
- **nvm (Node Version Manager):**
|
|
30
|
+
- MacOS: [nvm-sh/nvm](https://github.com/nvm-sh/nvm)
|
|
31
|
+
- Windows: [coreybutler/nvm-windows](https://github.com/coreybutler/nvm-windows)
|
|
32
|
+
- **Node.js:** 22.14.0
|
|
33
|
+
_(nvm sẽ tự động cài đặt phiên bản này nếu chưa có)_
|
|
34
|
+
- MacOS: [node-v22.14.0.pkg](https://nodejs.org/dist/v22.14.0/node-v22.14.0.pkg)
|
|
35
|
+
- Windows: [node-v22.14.0-x64.msi](https://nodejs.org/dist/v22.14.0/node-v22.14.0-x64.msi)
|
|
36
|
+
- **Docker:** [Docker Desktop](https://www.docker.com/products/docker-desktop)
|
|
37
|
+
- **Ghi chú:** Dùng **pnpm** để tránh xung đột với các công cụ khác.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Cài Đặt
|
|
42
|
+
|
|
43
|
+
1. **Tạo file cấu hình môi trường:**
|
|
44
|
+
Sao chép file `.env.example` thành `.env`.
|
|
45
|
+
2. **Chỉnh sửa file `.env`:**
|
|
46
|
+
Cập nhật các trường cần thiết phù hợp với môi trường máy.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Chạy Dự Án
|
|
51
|
+
|
|
52
|
+
### Chạy ở môi trường development với Docker
|
|
53
|
+
|
|
54
|
+
_(Lưu ý: Hãy bật Docker trước khi chạy)_
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
make build-development
|
|
58
|
+
make start-development
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Chạy ở môi trường development (Local)
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
pnpm i
|
|
65
|
+
pnpm run dev
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Các Script & Ý Nghĩa
|
|
71
|
+
|
|
72
|
+
| Script | Ý nghĩa |
|
|
73
|
+
| ---------------- | --------------------------------------- |
|
|
74
|
+
| **lint** | Kiểm tra lỗi lint và typescript |
|
|
75
|
+
| **lint:fix** | Tự động sửa các lỗi có thể sửa |
|
|
76
|
+
| **lint:inspect** | Xem chi tiết các lint rule đang dùng |
|
|
77
|
+
| **reset** | Cài đặt lại dependencies |
|
|
78
|
+
| **setup** | Nâng cấp dependencies |
|
|
79
|
+
| **inspect** | Xem chi tiết các dependencies đang dùng |
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Quy Ước Viết Code & Đặt Tên
|
|
84
|
+
|
|
85
|
+
### Quy Ước Đặt Tên
|
|
86
|
+
|
|
87
|
+
| Loại | Quy Ước | Ví Dụ |
|
|
88
|
+
| ------------- | ------------ | ------------------- |
|
|
89
|
+
| **Biến** | `camelCase` | `userName` |
|
|
90
|
+
| **Hàm** | `camelCase` | `getUserInfo()` |
|
|
91
|
+
| **Parameter** | `camelCase` | `id, userData` |
|
|
92
|
+
| **Argument** | `camelCase` | `fetchData(userId)` |
|
|
93
|
+
| **Private** | `_camelCase` | `_isHidden` |
|
|
94
|
+
| **Class** | `PascalCase` | `UserProfile` |
|
|
95
|
+
| **Hằng số** | `UPPER_CASE` | `MAX_RETRY_COUNT` |
|
|
96
|
+
| **File** | `kebab-case` | `user-service.ts` |
|
|
97
|
+
| **Thư mục** | `kebab-case` | `services/` |
|
|
98
|
+
|
|
99
|
+
### Quy Ước Đặt Tên Chung
|
|
100
|
+
|
|
101
|
+
| Loại | Tiền Tố | Quy Tắc | Ví Dụ |
|
|
102
|
+
| ------------------------ | ------------- | ----------------------------- | --------------------------- |
|
|
103
|
+
| **Biến đại diện input** | `I_Input_` | Tiền tố + loại + kiểu dữ liệu | `interface I_Input_User` |
|
|
104
|
+
| **Biến đại diện output** | `I_Response_` | Tiền tố + loại + kiểu dữ liệu | `interface I_Response_User` |
|
|
105
|
+
|
|
106
|
+
### Quy Ước Tiền Tố Trong TypeScript
|
|
107
|
+
|
|
108
|
+
| Loại | Tiền Tố | Ví Dụ |
|
|
109
|
+
| ------------- | ------- | ------------------ |
|
|
110
|
+
| **Interface** | `I_` | `interface I_User` |
|
|
111
|
+
| **Type** | `T_` | `type T_User` |
|
|
112
|
+
| **Enum** | `E_` | `enum E_User` |
|
|
113
|
+
|
|
114
|
+
### Quy Ước Đặt Tên Type Trong GraphQL
|
|
115
|
+
|
|
116
|
+
| Loại | Tiền Tố | Ví Dụ |
|
|
117
|
+
| ------------- | ------- | --------------------- |
|
|
118
|
+
| **Type** | `T_` | `type T_User` |
|
|
119
|
+
| **Input** | `Input_`| `input Input_CreateUser`|
|
|
120
|
+
| **Interface** | `I_` | `input I_User` |
|
|
121
|
+
| **Union** | `U_` | `input U_SearchResult` |
|
|
122
|
+
|
|
123
|
+
### Quy Ước Đặt Tên Biến Môi Trường
|
|
124
|
+
|
|
125
|
+
| Loại | Tiền Tố | Ví Dụ |
|
|
126
|
+
| ----------- | -------------- | --------------------- |
|
|
127
|
+
| **Vite** | `VITE_` | `VITE_API_SECRET` |
|
|
128
|
+
| **Next.js** | `NEXT_PUBLIC_` | `NEXT_PUBLIC_API_KEY` |
|
|
129
|
+
| **Node.js** | `NODE_` | `NODE_ENV` |
|
|
130
|
+
|
|
131
|
+
### Quy Ước Khi Import
|
|
132
|
+
|
|
133
|
+
1. Các thư viện bên ngoài **ở trên cùng**.
|
|
134
|
+
2. Các module/hàm tiện ích **ở dưới**, cách một dòng trắng với phần trên.
|
|
135
|
+
3. Định cấu hình đường dẫn để **import nhanh** trong `tsconfig.json`.
|
|
136
|
+
|
|
137
|
+
```ts
|
|
138
|
+
import React from 'react'; // Thư viện bên ngoài
|
|
139
|
+
|
|
140
|
+
import { formatDate } from '#shared/utils'; // Module nội bộ
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Quy Ước Viết Code
|
|
144
|
+
|
|
145
|
+
✅ **Làm**
|
|
146
|
+
|
|
147
|
+
- Dùng `let` và `const` thay vì `var`.
|
|
148
|
+
- Dùng `===` thay vì `==`.
|
|
149
|
+
- Xóa `console.log`, `alert` và `debugger` trước khi commit.
|
|
150
|
+
|
|
151
|
+
❌ **Không làm**
|
|
152
|
+
|
|
153
|
+
- Không dùng `any`, `unknown`, `never`.
|
|
154
|
+
- Không dùng `@ts-ignore`, `@ts-nocheck`.
|
|
155
|
+
|
|
156
|
+
### Quy Ước Đặt Commit Message
|
|
157
|
+
|
|
158
|
+
| Loại Commit | Cú Pháp | Ví Dụ |
|
|
159
|
+
| ----------------- | ----------------------- | ------------------------------------------ |
|
|
160
|
+
| **Tính năng mới** | `feat(module): message` | `feat(user): add user login form` |
|
|
161
|
+
| **Sửa lỗi** | `fix(module): message` | `fix(auth): incorrect password validation` |
|
|
162
|
+
| **Dọn dẹp** | `chore(module): message`| `chore(product): refactor product filter` |
|
|
163
|
+
|
|
164
|
+
## Quy Trình Làm Việc Với Git
|
|
165
|
+
|
|
166
|
+
1. **Tạo nhánh mới từ `develop`**:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
git checkout develop
|
|
170
|
+
git pull origin develop
|
|
171
|
+
git checkout -b feature/new-feature
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
2. **Commit theo chuẩn**:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
git commit -m "feat(module): mô tả ngắn gọn"
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
3. **Rebase trước khi merge**:
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
git checkout develop
|
|
184
|
+
git pull origin develop
|
|
185
|
+
git checkout feature/new-feature
|
|
186
|
+
git rebase develop
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
4. **Tạo Pull Request (PR)** và đợi review trước khi merge vào `develop`.
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
> **Ghi chú:** Nếu có bất kỳ thắc mắc nào, vui lòng liên hệ team phát triển!
|