@lark-apaas/fullstack-cli 1.1.37-alpha.0 → 1.1.37-alpha.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lark-apaas/fullstack-cli",
3
- "version": "1.1.37-alpha.0",
3
+ "version": "1.1.37-alpha.1",
4
4
  "description": "CLI tool for fullstack template management",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -19,105 +19,116 @@ print_time() {
19
19
  }
20
20
 
21
21
  # ==================== 步骤 0 ====================
22
- echo "🗑️ [0/5] 安装插件"
22
+ echo "🗑️ [0/7] 安装插件"
23
23
  STEP_START=$(node -e "console.log(Date.now())")
24
24
  npx fullstack-cli action-plugin init
25
25
  print_time $STEP_START
26
26
  echo ""
27
27
 
28
28
  # ==================== 步骤 1 ====================
29
- echo "📝 [1/5] 更新 openapi 代码"
29
+ echo "📝 [1/7] 更新 openapi 代码"
30
30
  STEP_START=$(node -e "console.log(Date.now())")
31
31
  npm run gen:openapi
32
32
  print_time $STEP_START
33
33
  echo ""
34
34
 
35
35
  # ==================== 步骤 2 ====================
36
- echo "🗑️ [2/5] 清理 dist 目录"
36
+ echo "🗑️ [2/7] 清理 dist 目录"
37
37
  STEP_START=$(node -e "console.log(Date.now())")
38
38
  rm -rf "$ROOT_DIR/dist"
39
39
  print_time $STEP_START
40
40
  echo ""
41
41
 
42
42
  # ==================== 步骤 3 ====================
43
+ echo "🗺️ [3/7] 生成路由定义"
43
44
  STEP_START=$(node -e "console.log(Date.now())")
44
45
 
45
- # 根据 only_frontend_change 决定是否构建 server
46
- if [[ "${only_frontend_change:-false}" == "true" ]]; then
47
- echo "🔨 [3/5] 仅构建 client (only_frontend_change=true)"
46
+ # client/server 构建之前生成到 dist/,供 DefinePlugin 注入前端 bundle
47
+ # 注意:nest-cli.json 中 deleteOutDir 必须为 false(模板默认值),否则 nest build 会清掉 dist/
48
+ echo " ├─ 生成 API 路由定义..."
49
+ npx generate-api-routes --server-dir ./server --out-dir ./dist > /tmp/gen-api-routes.log 2>&1 &
50
+ API_ROUTES_PID=$!
48
51
 
49
- echo " ├─ 启动 client 构建..."
50
- npm run build:client > /tmp/build-client.log 2>&1
51
- CLIENT_EXIT=$?
52
+ echo " ├─ 生成页面路由定义..."
53
+ npx generate-page-routes --app-path ./client/src/app.tsx --out-dir ./dist > /tmp/gen-page-routes.log 2>&1 &
54
+ PAGE_ROUTES_PID=$!
52
55
 
53
- if [ $CLIENT_EXIT -ne 0 ]; then
54
- echo " ❌ Client 构建失败"
55
- cat /tmp/build-client.log
56
- exit 1
57
- fi
56
+ API_ROUTES_EXIT=0
57
+ PAGE_ROUTES_EXIT=0
58
58
 
59
- echo " ✅ Client 构建完成"
59
+ wait $API_ROUTES_PID || API_ROUTES_EXIT=$?
60
+ wait $PAGE_ROUTES_PID || PAGE_ROUTES_EXIT=$?
61
+
62
+ if [ $API_ROUTES_EXIT -ne 0 ]; then
63
+ echo " ⚠️ API 路由生成失败(不影响构建)"
64
+ cat /tmp/gen-api-routes.log
60
65
  else
61
- echo "🔨 [3/5] 并行构建 server 和 client"
62
-
63
- # 并行构建
64
- echo " ├─ 启动 server 构建..."
65
- npm run build:server > /tmp/build-server.log 2>&1 &
66
- SERVER_PID=$!
67
-
68
- echo " ├─ 启动 client 构建..."
69
- npm run build:client > /tmp/build-client.log 2>&1 &
70
- CLIENT_PID=$!
71
-
72
- # 等待两个构建完成
73
- SERVER_EXIT=0
74
- CLIENT_EXIT=0
75
-
76
- wait $SERVER_PID || SERVER_EXIT=$?
77
- wait $CLIENT_PID || CLIENT_EXIT=$?
78
-
79
- # 检查构建结果
80
- if [ $SERVER_EXIT -ne 0 ]; then
81
- echo " ❌ Server 构建失败"
82
- cat /tmp/build-server.log
83
- exit 1
84
- fi
85
-
86
- if [ $CLIENT_EXIT -ne 0 ]; then
87
- echo " ❌ Client 构建失败"
88
- cat /tmp/build-client.log
89
- exit 1
90
- fi
91
-
92
- echo " ✅ Server 构建完成"
93
- echo " ✅ Client 构建完成"
66
+ echo " API 路由生成完成"
94
67
  fi
95
68
 
69
+ if [ $PAGE_ROUTES_EXIT -ne 0 ]; then
70
+ echo " ⚠️ 页面路由生成失败(不影响构建)"
71
+ cat /tmp/gen-page-routes.log
72
+ else
73
+ echo " ✅ 页面路由生成完成"
74
+ fi
96
75
  print_time $STEP_START
97
76
  echo ""
98
77
 
99
78
  # ==================== 步骤 4 ====================
100
- echo "📦 [4/5] 准备产物"
79
+ echo "🔨 [4/7] 并行构建 server 和 client"
101
80
  STEP_START=$(node -e "console.log(Date.now())")
102
81
 
103
- # 移动 client 下的 HTML 文件到 dist/dist/client,保证 views 路径在 dev/prod 下一致
104
- # HTML 文件属于前端产物,始终执行
105
- if [ -d "$DIST_DIR/client" ]; then
106
- mkdir -p "$DIST_DIR/dist/client"
107
- find "$DIST_DIR/client" -maxdepth 1 -name "*.html" -exec cp {} "$DIST_DIR/dist/client/" \;
82
+ # 并行构建
83
+ echo " ├─ 启动 server 构建..."
84
+ npm run build:server > /tmp/build-server.log 2>&1 &
85
+ SERVER_PID=$!
86
+
87
+ echo " ├─ 启动 client 构建..."
88
+ npm run build:client > /tmp/build-client.log 2>&1 &
89
+ CLIENT_PID=$!
90
+
91
+ # 等待两个构建完成
92
+ SERVER_EXIT=0
93
+ CLIENT_EXIT=0
94
+
95
+ wait $SERVER_PID || SERVER_EXIT=$?
96
+ wait $CLIENT_PID || CLIENT_EXIT=$?
97
+
98
+ # 检查构建结果
99
+ if [ $SERVER_EXIT -ne 0 ]; then
100
+ echo " ❌ Server 构建失败"
101
+ cat /tmp/build-server.log
102
+ exit 1
108
103
  fi
109
104
 
110
- # server 相关产物准备(only_frontend_change=true 时跳过)
111
- if [[ "${only_frontend_change:-false}" == "true" ]]; then
112
- echo " [skip] 跳过 run.sh/.env 复制 (only_frontend_change=true)"
113
- else
114
- # 拷贝 run.sh 到 dist/(prod 从 dist/ 启动,确保 cwd 一致性)
115
- cp "$ROOT_DIR/scripts/run.sh" "$DIST_DIR/"
105
+ if [ $CLIENT_EXIT -ne 0 ]; then
106
+ echo " Client 构建失败"
107
+ cat /tmp/build-client.log
108
+ exit 1
109
+ fi
110
+
111
+ echo " ✅ Server 构建完成"
112
+ echo " ✅ Client 构建完成"
113
+ print_time $STEP_START
114
+ echo ""
115
+
116
+ # ==================== 步骤 5 ====================
117
+ echo "📦 [5/7] 准备产物"
118
+ STEP_START=$(node -e "console.log(Date.now())")
119
+
120
+ # 拷贝 run.sh 到 dist/(prod 从 dist/ 启动,确保 cwd 一致性)
121
+ cp "$ROOT_DIR/scripts/run.sh" "$DIST_DIR/"
122
+
123
+ # 拷贝 .env 文件(如果存在)
124
+ if [ -f "$ROOT_DIR/.env" ]; then
125
+ cp "$ROOT_DIR/.env" "$DIST_DIR/"
126
+ fi
116
127
 
117
- # 拷贝 .env 文件(如果存在)
118
- if [ -f "$ROOT_DIR/.env" ]; then
119
- cp "$ROOT_DIR/.env" "$DIST_DIR/"
120
- fi
128
+ # 移动 client 下的 HTML 文件到 dist/dist/client,保证 views 路径在 dev/prod 下一致
129
+ if [ -d "$DIST_DIR/client" ]; then
130
+ mkdir -p "$DIST_DIR/dist/client"
131
+ find "$DIST_DIR/client" -maxdepth 1 -name "*.html" -exec mv {} "$DIST_DIR/dist/client/" \;
121
132
  fi
122
133
 
123
134
  # 清理无用文件
@@ -127,18 +138,12 @@ rm -rf "$DIST_DIR/tsconfig.node.tsbuildinfo"
127
138
  print_time $STEP_START
128
139
  echo ""
129
140
 
130
- # ==================== 步骤 5 ====================
141
+ # ==================== 步骤 6 ====================
142
+ echo "✂️ [6/7] 智能依赖裁剪"
131
143
  STEP_START=$(node -e "console.log(Date.now())")
132
144
 
133
- # 智能依赖裁剪(仅全量构建时执行,纯前端场景不打包 server,无需裁剪)
134
- if [[ "${only_frontend_change:-false}" == "true" ]]; then
135
- echo "✂️ [5/5] 跳过智能依赖裁剪 (only_frontend_change=true)"
136
- else
137
- echo "✂️ [5/5] 智能依赖裁剪"
138
-
139
- # 分析实际依赖、复制并裁剪 node_modules、生成精简的 package.json
140
- node "$ROOT_DIR/scripts/prune-smart.js"
141
- fi
145
+ # 分析实际依赖、复制并裁剪 node_modules、生成精简的 package.json
146
+ node "$ROOT_DIR/scripts/prune-smart.js"
142
147
 
143
148
  print_time $STEP_START
144
149
  echo ""
@@ -149,16 +154,9 @@ print_time $TOTAL_START
149
154
 
150
155
  # 输出产物信息
151
156
  DIST_SIZE=$(du -sh "$DIST_DIR" | cut -f1)
152
- if [[ "${only_frontend_change:-false}" == "true" ]]; then
153
- echo ""
154
- echo "📊 构建产物统计:"
155
- echo " 产物大小: $DIST_SIZE"
156
- echo ""
157
- else
158
- NODE_MODULES_SIZE=$(du -sh "$DIST_DIR/node_modules" | cut -f1)
159
- echo ""
160
- echo "📊 构建产物统计:"
161
- echo " 产物大小: $DIST_SIZE"
162
- echo " node_modules: $NODE_MODULES_SIZE"
163
- echo ""
164
- fi
157
+ NODE_MODULES_SIZE=$(du -sh "$DIST_DIR/node_modules" | cut -f1)
158
+ echo ""
159
+ echo "📊 构建产物统计:"
160
+ echo " 产物大小: $DIST_SIZE"
161
+ echo " node_modules: $NODE_MODULES_SIZE"
162
+ echo ""