@momo-kits/native-kits 0.155.2-test.1 → 0.156.1-beta.12-debug
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/PUBLISH_GUIDE.md +544 -0
- package/build.gradle.kts +11 -0
- package/compose/build.gradle.kts +180 -0
- package/compose/build.gradle.kts.backup +180 -0
- package/compose/compose.podspec +54 -0
- package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +113 -0
- package/compose/src/commonMain/composeResources/font/momosignature.otf +0 -0
- package/compose/src/commonMain/composeResources/font/momotrustdisplay.otf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_black.otf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_black.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_bold.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_heavy.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_light.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_medium.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_regular.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_semibold.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_thin.otf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_thin.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.otf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.ttf +0 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/AnimationSearchInput.kt +57 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +95 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/FloatingButton.kt +201 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/Header.kt +222 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderAnimated.kt +48 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderBackground.kt +86 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderDefault.kt +76 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderExtended.kt +76 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +305 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderTitle.kt +33 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +715 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +121 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +405 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/useHeaderSearchAnimation.kt +69 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +83 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +32 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +340 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +348 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +94 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +136 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +543 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +23 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +76 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +148 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +188 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +116 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +447 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +172 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +244 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +231 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +234 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +254 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +241 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +364 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +56 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +41 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +92 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +40 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +352 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +103 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +70 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +17 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +96 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +96 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +92 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +130 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +214 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +177 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +205 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +29 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +239 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +191 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +306 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +12 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +13 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +189 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +285 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +2 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +35 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +2 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +59 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +68 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +11 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/DeprecatedModifier.kt +14 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +50 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +51 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +239 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +119 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +98 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +163 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +331 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +497 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +162 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +226 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +86 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +187 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +274 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +80 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +306 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +31 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +370 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +132 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +42 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +1329 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +62 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +88 -0
- package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +152 -0
- package/gradle/libs.versions.toml +57 -0
- package/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/gradle/wrapper/gradle-wrapper.properties +8 -0
- package/gradle.properties +26 -0
- package/gradlew +252 -0
- package/gradlew.bat +94 -0
- package/ios/Input/Input.swift +247 -149
- package/ios/Input/InputPhoneNumber.swift +14 -0
- package/ios/Popup/PopupDisplay.swift +6 -1
- package/ios/Popup/PopupInput.swift +1 -1
- package/ios/Popup/PopupPromotion.swift +2 -3
- package/local.properties +8 -0
- package/package.json +1 -1
- package/publish.sh +431 -0
- package/settings.gradle.kts +52 -0
package/PUBLISH_GUIDE.md
ADDED
|
@@ -0,0 +1,544 @@
|
|
|
1
|
+
# Hướng Dẫn Publish NPM Package
|
|
2
|
+
|
|
3
|
+
Tài liệu này hướng dẫn cách sử dụng script publish cho `@momo-kits/native-kits`.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 📋 Tổng Quan
|
|
8
|
+
|
|
9
|
+
Dự án sử dụng **`publish.sh`** - một script thống nhất hỗ trợ 2 modes:
|
|
10
|
+
|
|
11
|
+
- **`beta`**: Publish phiên bản beta cho testing
|
|
12
|
+
- **`release`**: Publish phiên bản release chính thức
|
|
13
|
+
|
|
14
|
+
Script có 3 phases riêng biệt:
|
|
15
|
+
1. **Check Version**: Kiểm tra và chuẩn bị version
|
|
16
|
+
2. **Publish NPM**: Publish lên NPM registry
|
|
17
|
+
3. **Publish Maven**: Publish lên GitLab Maven repository
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 🚀 Publish Từ Local
|
|
22
|
+
|
|
23
|
+
### Yêu Cầu Trước Khi Publish
|
|
24
|
+
|
|
25
|
+
1. **Login NPM:**
|
|
26
|
+
```bash
|
|
27
|
+
npm login
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
2. **Kiểm tra version hiện tại:**
|
|
31
|
+
```bash
|
|
32
|
+
cat package.json | grep version
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### 🔵 Publish Beta Từ Local
|
|
36
|
+
|
|
37
|
+
#### **Cách 1: Publish tất cả phases (Khuyến nghị)**
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
sh publish.sh beta
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
#### **Cách 2: Chạy từng phase riêng**
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# Phase 1: Check version
|
|
47
|
+
sh publish.sh beta check
|
|
48
|
+
|
|
49
|
+
# Phase 2: Publish NPM
|
|
50
|
+
sh publish.sh beta npm
|
|
51
|
+
|
|
52
|
+
# Phase 3: Publish Maven
|
|
53
|
+
sh publish.sh beta maven
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
#### **Quy Trình Beta Publishing**
|
|
57
|
+
|
|
58
|
+
1. **Update version trong `package.json`:**
|
|
59
|
+
```json
|
|
60
|
+
{
|
|
61
|
+
"version": "0.156.2"
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
2. **Chạy check version trước (optional nhưng khuyến nghị):**
|
|
66
|
+
```bash
|
|
67
|
+
sh publish.sh beta check
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
3. **Nếu check thành công, publish:**
|
|
71
|
+
```bash
|
|
72
|
+
sh publish.sh beta
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
#### **Ví Dụ Beta Publishing**
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# 1. Kiểm tra version
|
|
79
|
+
$ cat package.json | grep version
|
|
80
|
+
"version": "0.156.2"
|
|
81
|
+
|
|
82
|
+
# 2. Test check version
|
|
83
|
+
$ sh publish.sh beta check
|
|
84
|
+
📦 Version from package.json: 0.156.2
|
|
85
|
+
🔎 Checking if version 0.156.2 already exists on npm...
|
|
86
|
+
✅ Version 0.156.2 does not exist on npm. Safe to publish.
|
|
87
|
+
✅ PHASE 1 COMPLETED
|
|
88
|
+
|
|
89
|
+
# 3. Publish
|
|
90
|
+
$ sh publish.sh beta
|
|
91
|
+
🚀 PUBLISH SCRIPT - MODE: BETA
|
|
92
|
+
Running ALL PHASES
|
|
93
|
+
[... Phase 1: Check version ...]
|
|
94
|
+
[... Phase 2: Publish NPM ...]
|
|
95
|
+
🐛 Debug version: 0.156.2-debug (with compose) - Published first
|
|
96
|
+
📦 Normal version: 0.156.2 (without compose) - Published second
|
|
97
|
+
🏷️ NPM Tag: beta
|
|
98
|
+
[... Phase 3: Publish Maven ...]
|
|
99
|
+
🎉 ALL PHASES COMPLETED SUCCESSFULLY!
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
#### **⚠️ Nếu Version Đã Tồn Tại**
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
$ sh publish.sh beta check
|
|
106
|
+
❌ ERROR: Version 0.156.1 already exists on npm!
|
|
107
|
+
|
|
108
|
+
Please update the version in package.json before publishing.
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Giải pháp:** Tăng version trong `package.json`:
|
|
112
|
+
```bash
|
|
113
|
+
# Mở và edit file
|
|
114
|
+
vim package.json
|
|
115
|
+
# hoặc
|
|
116
|
+
code package.json
|
|
117
|
+
|
|
118
|
+
# Thay đổi: "version": "0.156.1" → "0.156.2"
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### 🟢 Publish Release Từ Local
|
|
122
|
+
|
|
123
|
+
#### **Cách 1: Publish tất cả phases (Khuyến nghị)**
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
sh publish.sh release
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
#### **Cách 2: Chạy từng phase riêng**
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
# Phase 1: Check version
|
|
133
|
+
sh publish.sh release check
|
|
134
|
+
|
|
135
|
+
# Phase 2: Publish NPM
|
|
136
|
+
sh publish.sh release npm
|
|
137
|
+
|
|
138
|
+
# Phase 3: Publish Maven
|
|
139
|
+
sh publish.sh release maven
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
#### **Quy Trình Release Publishing**
|
|
143
|
+
|
|
144
|
+
1. **Version trong `package.json` có thể là bất kỳ format nào:**
|
|
145
|
+
```json
|
|
146
|
+
{
|
|
147
|
+
"version": "0.156.1-test.5"
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
2. **Chạy publish:**
|
|
152
|
+
```bash
|
|
153
|
+
sh publish.sh release
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
3. **Script sẽ tự động:**
|
|
157
|
+
- Convert sang format beta: `0.156.1-test.5` → `0.156.1-beta.1`
|
|
158
|
+
- Check version trên npm
|
|
159
|
+
- Auto-increment nếu đã tồn tại: `0.156.1-beta.1` → `0.156.1-beta.2`
|
|
160
|
+
- Publish với tag `latest`
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## 🤖 Publish Tự Động Trên GitLab CI
|
|
165
|
+
|
|
166
|
+
### 🔵 Beta Publishing (GitLab CI)
|
|
167
|
+
|
|
168
|
+
**Trigger:** Commit message chứa `[ci build]`
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
git add .
|
|
172
|
+
git commit -m "feat: add new feature [ci build]"
|
|
173
|
+
git push
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**Pipeline sẽ chạy 3 stages:**
|
|
177
|
+
1. `beta_check_version`
|
|
178
|
+
2. `beta_publish_npm`
|
|
179
|
+
3. `beta_publish_maven`
|
|
180
|
+
|
|
181
|
+
### 🟢 Release Publishing (GitLab CI)
|
|
182
|
+
|
|
183
|
+
**Trigger:** Push vào nhánh `main`
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
git checkout main
|
|
187
|
+
git merge develop
|
|
188
|
+
git push origin main
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
**Pipeline sẽ chạy 3 stages:**
|
|
192
|
+
1. `release_check_version`
|
|
193
|
+
2. `release_publish_npm`
|
|
194
|
+
3. `release_publish_maven`
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## 📊 So Sánh Beta vs Release
|
|
199
|
+
|
|
200
|
+
| Tiêu chí | Beta Mode | Release Mode |
|
|
201
|
+
|----------|-----------|--------------|
|
|
202
|
+
| **Script** | `sh publish.sh beta` | `sh publish.sh release` |
|
|
203
|
+
| **Trigger CI** | Commit có `[ci build]` | Push vào `main` |
|
|
204
|
+
| **Version Check** | **Fail** nếu tồn tại | **Auto-increment** |
|
|
205
|
+
| **Format Version** | Giữ nguyên | Convert → `-beta.*` |
|
|
206
|
+
| **NPM Tag** | `beta` | `latest` |
|
|
207
|
+
| **Publish Order** | Debug first → Normal | Debug first → Normal |
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## 🔍 Chi Tiết Các Phases
|
|
212
|
+
|
|
213
|
+
### **Phase 1: Check Version**
|
|
214
|
+
|
|
215
|
+
**Beta Mode:**
|
|
216
|
+
- Đọc version từ `package.json`
|
|
217
|
+
- Check version trên npm
|
|
218
|
+
- ❌ **FAIL** nếu version đã tồn tại
|
|
219
|
+
- Update `gradle.properties`
|
|
220
|
+
|
|
221
|
+
**Release Mode:**
|
|
222
|
+
- Đọc version từ `package.json`
|
|
223
|
+
- Convert sang format `-beta.*` nếu cần
|
|
224
|
+
- Check version trên npm
|
|
225
|
+
- ✅ **Auto-increment** nếu đã tồn tại
|
|
226
|
+
- Update `gradle.properties`
|
|
227
|
+
|
|
228
|
+
### **Phase 2: Publish NPM**
|
|
229
|
+
|
|
230
|
+
**Thứ tự publish (cả Beta và Release):**
|
|
231
|
+
|
|
232
|
+
1. **Debug version** (với compose) - Published FIRST
|
|
233
|
+
- Version: `X.Y.Z-debug`
|
|
234
|
+
- Bao gồm thư mục `compose/`
|
|
235
|
+
- Dành cho development/testing
|
|
236
|
+
|
|
237
|
+
2. **Normal version** (không compose) - Published SECOND
|
|
238
|
+
- Version: `X.Y.Z`
|
|
239
|
+
- Không bao gồm `compose/`
|
|
240
|
+
- Dành cho React Native apps
|
|
241
|
+
|
|
242
|
+
### **Phase 3: Publish Maven**
|
|
243
|
+
|
|
244
|
+
- Publish Kotlin Multiplatform artifacts
|
|
245
|
+
- Lên GitLab Packages Repository
|
|
246
|
+
- Dành cho `compose` module
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## 📝 Ví Dụ Chi Tiết
|
|
251
|
+
|
|
252
|
+
### **Ví dụ 1: Beta - Version chưa tồn tại**
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
$ sh publish.sh beta
|
|
256
|
+
|
|
257
|
+
📦 Version from package.json: 0.156.2
|
|
258
|
+
🔎 Checking if version 0.156.2 already exists on npm...
|
|
259
|
+
✅ Version 0.156.2 does not exist on npm. Safe to publish.
|
|
260
|
+
|
|
261
|
+
# Phase 2
|
|
262
|
+
🐛 Debug version: 0.156.2-debug (with compose) - Published first
|
|
263
|
+
📦 Normal version: 0.156.2 (without compose) - Published second
|
|
264
|
+
🏷️ NPM Tag: beta
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
**Kết quả trên NPM:**
|
|
268
|
+
- `@momo-kits/native-kits@0.156.2-debug` (tag: beta)
|
|
269
|
+
- `@momo-kits/native-kits@0.156.2` (tag: beta)
|
|
270
|
+
|
|
271
|
+
### **Ví dụ 2: Beta - Version đã tồn tại (FAIL)**
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
$ sh publish.sh beta check
|
|
275
|
+
|
|
276
|
+
📦 Version from package.json: 0.156.1
|
|
277
|
+
🔎 Checking if version 0.156.1 already exists on npm...
|
|
278
|
+
|
|
279
|
+
❌ ERROR: Version 0.156.1 already exists on npm!
|
|
280
|
+
|
|
281
|
+
Please update the version in package.json before publishing.
|
|
282
|
+
# Exit code: 1
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
### **Ví dụ 3: Release - Auto-convert và increment**
|
|
286
|
+
|
|
287
|
+
```bash
|
|
288
|
+
$ sh publish.sh release
|
|
289
|
+
|
|
290
|
+
📦 Version from package.json: 0.156.1-test.5
|
|
291
|
+
🔄 Converting to beta format: 0.156.1-test.5 → 0.156.1-beta.1
|
|
292
|
+
✅ Version updated to beta format: 0.156.1-beta.1
|
|
293
|
+
🔎 Checking if version 0.156.1-beta.1 already exists on npm...
|
|
294
|
+
⚠️ Version 0.156.1-beta.1 already exists on npm. Auto-incrementing...
|
|
295
|
+
Version incremented: 0.156.1-beta.1 → 0.156.1-beta.2
|
|
296
|
+
🔄 Checking version 0.156.1-beta.2 on npm...
|
|
297
|
+
✅ Version 0.156.1-beta.2 does not exist on npm. Using this version.
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
**Kết quả trên NPM:**
|
|
301
|
+
- `@momo-kits/native-kits@0.156.1-beta.2-debug` (tag: latest)
|
|
302
|
+
- `@momo-kits/native-kits@0.156.1-beta.2` (tag: latest)
|
|
303
|
+
|
|
304
|
+
### **Ví dụ 4: Release - Multiple increments**
|
|
305
|
+
|
|
306
|
+
```bash
|
|
307
|
+
$ sh publish.sh release
|
|
308
|
+
|
|
309
|
+
📦 Version from package.json: 0.156.1-beta.5
|
|
310
|
+
|
|
311
|
+
# Giả sử NPM đã có: beta.5, beta.6, beta.7
|
|
312
|
+
⚠️ Version 0.156.1-beta.5 already exists on npm...
|
|
313
|
+
Version incremented: 0.156.1-beta.5 → 0.156.1-beta.6
|
|
314
|
+
⚠️ Version 0.156.1-beta.6 already exists on npm...
|
|
315
|
+
Version incremented: 0.156.1-beta.6 → 0.156.1-beta.7
|
|
316
|
+
⚠️ Version 0.156.1-beta.7 already exists on npm...
|
|
317
|
+
Version incremented: 0.156.1-beta.7 → 0.156.1-beta.8
|
|
318
|
+
✅ Version 0.156.1-beta.8 does not exist on npm. Using this version.
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
## 🎯 Workflow Khuyến Nghị
|
|
324
|
+
|
|
325
|
+
### Development Flow
|
|
326
|
+
|
|
327
|
+
```
|
|
328
|
+
┌──────────────────────────────────────────────────┐
|
|
329
|
+
│ 1. Develop Feature │
|
|
330
|
+
│ - Code changes │
|
|
331
|
+
│ - Update version in package.json │
|
|
332
|
+
└─────────────────┬────────────────────────────────┘
|
|
333
|
+
↓
|
|
334
|
+
┌──────────────────────────────────────────────────┐
|
|
335
|
+
│ 2. Beta Testing │
|
|
336
|
+
│ Local: sh publish.sh beta │
|
|
337
|
+
│ CI: git commit -m "feat: xxx [ci build]" │
|
|
338
|
+
└─────────────────┬────────────────────────────────┘
|
|
339
|
+
↓
|
|
340
|
+
┌──────────────────────────────────────────────────┐
|
|
341
|
+
│ 3. Team Testing │
|
|
342
|
+
│ npm install @momo-kits/native-kits@beta │
|
|
343
|
+
└─────────────────┬────────────────────────────────┘
|
|
344
|
+
↓
|
|
345
|
+
┌──────┴──────┐
|
|
346
|
+
│ Approved? │
|
|
347
|
+
└──────┬───────┘
|
|
348
|
+
│ Yes
|
|
349
|
+
↓
|
|
350
|
+
┌──────────────────────────────────────────────────┐
|
|
351
|
+
│ 4. Release Production │
|
|
352
|
+
│ Local: sh publish.sh release │
|
|
353
|
+
│ CI: merge to main │
|
|
354
|
+
└─────────────────┬────────────────────────────────┘
|
|
355
|
+
↓
|
|
356
|
+
┌──────────────────────────────────────────────────┐
|
|
357
|
+
│ 5. Production │
|
|
358
|
+
│ npm install @momo-kits/native-kits@latest │
|
|
359
|
+
└──────────────────────────────────────────────────┘
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
---
|
|
363
|
+
|
|
364
|
+
## ⚠️ Lưu Ý Quan Trọng
|
|
365
|
+
|
|
366
|
+
### 1. Publishing Order
|
|
367
|
+
|
|
368
|
+
**NPM publish theo thứ tự:**
|
|
369
|
+
1. ✅ Debug version (`X.Y.Z-debug`) - FIRST
|
|
370
|
+
2. ✅ Normal version (`X.Y.Z`) - SECOND
|
|
371
|
+
|
|
372
|
+
**Lý do:** Đảm bảo debug version luôn available trước
|
|
373
|
+
|
|
374
|
+
### 2. Version Format
|
|
375
|
+
|
|
376
|
+
**Beta Mode:**
|
|
377
|
+
- Giữ nguyên format trong `package.json`
|
|
378
|
+
- Fail nếu đã tồn tại trên npm
|
|
379
|
+
- ⚠️ Developer phải tự quản lý version
|
|
380
|
+
|
|
381
|
+
**Release Mode:**
|
|
382
|
+
- Auto-convert sang `-beta.*` format:
|
|
383
|
+
- `0.156.1-test.5` → `0.156.1-beta.1`
|
|
384
|
+
- `0.156.1-alpha.2` → `0.156.1-beta.1`
|
|
385
|
+
- `0.156.1-rc.3` → `0.156.1-beta.1`
|
|
386
|
+
- Auto-increment nếu tồn tại:
|
|
387
|
+
- Beta: `-beta.5` → `-beta.6`
|
|
388
|
+
- Regular: `1.0.0` → `1.0.1`
|
|
389
|
+
|
|
390
|
+
### 3. File Modifications
|
|
391
|
+
|
|
392
|
+
Script tạm thời modify các file (restore sau publish):
|
|
393
|
+
- `package.json` (version)
|
|
394
|
+
- `gradle.properties` (version)
|
|
395
|
+
- `.npmignore` (cho debug version)
|
|
396
|
+
- `compose/build.gradle.kts` (cho debug version)
|
|
397
|
+
|
|
398
|
+
### 4. NPM Permissions
|
|
399
|
+
|
|
400
|
+
```bash
|
|
401
|
+
# Check account hiện tại
|
|
402
|
+
npm whoami
|
|
403
|
+
|
|
404
|
+
# Login nếu cần
|
|
405
|
+
npm login
|
|
406
|
+
|
|
407
|
+
# Verify permissions
|
|
408
|
+
npm access ls-packages @momo-kits
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
---
|
|
412
|
+
|
|
413
|
+
## 🐛 Troubleshooting
|
|
414
|
+
|
|
415
|
+
### Lỗi: "Could not read version from package.json"
|
|
416
|
+
|
|
417
|
+
**Nguyên nhân:** File `package.json` không hợp lệ
|
|
418
|
+
|
|
419
|
+
**Giải pháp:**
|
|
420
|
+
```bash
|
|
421
|
+
# Kiểm tra syntax
|
|
422
|
+
cat package.json | jq .
|
|
423
|
+
|
|
424
|
+
# Kiểm tra version field
|
|
425
|
+
cat package.json | grep version
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
### Lỗi: "Version already exists on npm" (Beta)
|
|
429
|
+
|
|
430
|
+
**Nguyên nhân:** Version đã được publish
|
|
431
|
+
|
|
432
|
+
**Giải pháp:**
|
|
433
|
+
```bash
|
|
434
|
+
# Option 1: Tăng version thủ công
|
|
435
|
+
vim package.json
|
|
436
|
+
# "version": "0.156.1" → "0.156.2"
|
|
437
|
+
|
|
438
|
+
# Option 2: Sử dụng release mode (auto-increment)
|
|
439
|
+
sh publish.sh release
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
### Lỗi: "Permission denied"
|
|
443
|
+
|
|
444
|
+
**Nguyên nhân:** Không có quyền publish package
|
|
445
|
+
|
|
446
|
+
**Giải pháp:**
|
|
447
|
+
```bash
|
|
448
|
+
# 1. Kiểm tra account
|
|
449
|
+
npm whoami
|
|
450
|
+
|
|
451
|
+
# 2. Login với account có quyền
|
|
452
|
+
npm login
|
|
453
|
+
|
|
454
|
+
# 3. Liên hệ admin để cấp quyền
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
### Script không chạy trên GitLab CI
|
|
458
|
+
|
|
459
|
+
**Beta không trigger:**
|
|
460
|
+
- ✅ Check commit message có `[ci build]`
|
|
461
|
+
- ✅ Check branch không match `engine/w*`
|
|
462
|
+
|
|
463
|
+
**Release không trigger:**
|
|
464
|
+
- ✅ Check đang push vào `main` branch
|
|
465
|
+
- ✅ Check GitLab CI settings
|
|
466
|
+
|
|
467
|
+
---
|
|
468
|
+
|
|
469
|
+
## 📦 Sử Dụng Packages
|
|
470
|
+
|
|
471
|
+
### Cài Đặt Beta Version
|
|
472
|
+
|
|
473
|
+
```bash
|
|
474
|
+
# Latest beta
|
|
475
|
+
npm install @momo-kits/native-kits@beta
|
|
476
|
+
|
|
477
|
+
# Specific beta version
|
|
478
|
+
npm install @momo-kits/native-kits@0.156.2
|
|
479
|
+
|
|
480
|
+
# Debug version (with compose)
|
|
481
|
+
npm install @momo-kits/native-kits@0.156.2-debug
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
### Cài Đặt Release Version
|
|
485
|
+
|
|
486
|
+
```bash
|
|
487
|
+
# Latest release
|
|
488
|
+
npm install @momo-kits/native-kits@latest
|
|
489
|
+
# hoặc
|
|
490
|
+
npm install @momo-kits/native-kits
|
|
491
|
+
|
|
492
|
+
# Specific release version
|
|
493
|
+
npm install @momo-kits/native-kits@0.156.1-beta.2
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
---
|
|
497
|
+
|
|
498
|
+
## 🎓 Best Practices
|
|
499
|
+
|
|
500
|
+
1. **Development:**
|
|
501
|
+
- Luôn test với beta trước khi release
|
|
502
|
+
- Dùng version có ý nghĩa (semantic versioning)
|
|
503
|
+
|
|
504
|
+
2. **Beta Testing:**
|
|
505
|
+
- Update version mỗi lần publish beta
|
|
506
|
+
- Kiểm tra version trước khi commit
|
|
507
|
+
|
|
508
|
+
3. **Release:**
|
|
509
|
+
- Chỉ release từ nhánh `main`
|
|
510
|
+
- Đảm bảo tất cả tests pass
|
|
511
|
+
|
|
512
|
+
4. **Version Management:**
|
|
513
|
+
- Beta: Tự quản lý version, tăng thủ công
|
|
514
|
+
- Release: Để script auto-increment
|
|
515
|
+
|
|
516
|
+
---
|
|
517
|
+
|
|
518
|
+
## 📞 Support
|
|
519
|
+
|
|
520
|
+
Nếu có vấn đề, liên hệ team hoặc tạo issue trên GitLab.
|
|
521
|
+
|
|
522
|
+
---
|
|
523
|
+
|
|
524
|
+
## 🔗 Quick Reference
|
|
525
|
+
|
|
526
|
+
```bash
|
|
527
|
+
# Beta - Local
|
|
528
|
+
sh publish.sh beta # All phases
|
|
529
|
+
sh publish.sh beta check # Check only
|
|
530
|
+
sh publish.sh beta npm # NPM only
|
|
531
|
+
sh publish.sh beta maven # Maven only
|
|
532
|
+
|
|
533
|
+
# Release - Local
|
|
534
|
+
sh publish.sh release # All phases
|
|
535
|
+
sh publish.sh release check # Check only
|
|
536
|
+
sh publish.sh release npm # NPM only
|
|
537
|
+
sh publish.sh release maven # Maven only
|
|
538
|
+
|
|
539
|
+
# Beta - CI
|
|
540
|
+
git commit -m "feat: xxx [ci build]" # Trigger beta
|
|
541
|
+
|
|
542
|
+
# Release - CI
|
|
543
|
+
git push origin main # Trigger release
|
|
544
|
+
```
|
package/build.gradle.kts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
plugins {
|
|
2
|
+
// this is necessary to avoid the plugins to be loaded multiple times
|
|
3
|
+
// in each subproject's classloader
|
|
4
|
+
alias(libs.plugins.android.application) apply false
|
|
5
|
+
alias(libs.plugins.android.library) apply false
|
|
6
|
+
alias(libs.plugins.compose) apply false
|
|
7
|
+
alias(libs.plugins.kotlin.compose.compiler) apply false
|
|
8
|
+
alias(libs.plugins.jetbrains.kotlin.multiplatform) apply false
|
|
9
|
+
alias(libs.plugins.jetbrains.kotlin.serialization) apply false
|
|
10
|
+
alias(libs.plugins.vanniktech.mavenPublish) apply false
|
|
11
|
+
}
|