@lark-apaas/fullstack-cli 1.1.28-alpha.1 → 1.1.28-alpha.10

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/dist/index.js CHANGED
@@ -7253,7 +7253,7 @@ function camelToKebab(str) {
7253
7253
  // src/commands/build/upload-static.handler.ts
7254
7254
  import * as fs25 from "fs";
7255
7255
  import * as path21 from "path";
7256
- import { execSync as execSync3 } from "child_process";
7256
+ import { execFileSync } from "child_process";
7257
7257
  function readCredentialsFromEnv() {
7258
7258
  const uploadPrefix = process.env.STATIC_UPLOAD_PREFIX;
7259
7259
  const uploadID = process.env.STATIC_UPLOAD_ID;
@@ -7350,14 +7350,16 @@ async function fetchPreUpload(appId, bucketId) {
7350
7350
  }
7351
7351
  function configureTosutil(tosutilPath, config) {
7352
7352
  const { endpoint, region, accessKeyID, secretAccessKey, sessionToken } = config;
7353
- execSync3(
7354
- `${tosutilPath} config -e ${endpoint} -i ${accessKeyID} -k ${secretAccessKey} -t ${sessionToken} -re ${region}`,
7353
+ execFileSync(
7354
+ tosutilPath,
7355
+ ["config", "-e", endpoint, "-i", accessKeyID, "-k", secretAccessKey, "-t", sessionToken, "-re", region],
7355
7356
  { stdio: "pipe" }
7356
7357
  );
7357
7358
  }
7358
7359
  function uploadToTos(tosutilPath, sourceDir, destUrl) {
7359
- execSync3(
7360
- `${tosutilPath} cp "${sourceDir}" "${destUrl}" -r -flat -j 5 -p 3 -ps 10485760 -f`,
7360
+ execFileSync(
7361
+ tosutilPath,
7362
+ ["cp", sourceDir, destUrl, "-r", "-flat", "-j", "5", "-p", "3", "-ps", "10485760", "-f"],
7361
7363
  { stdio: "inherit" }
7362
7364
  );
7363
7365
  }
@@ -7374,6 +7376,9 @@ function isDirEmpty(dirPath) {
7374
7376
 
7375
7377
  // src/commands/build/pre-upload-static.handler.ts
7376
7378
  var LOG_PREFIX2 = "[pre-upload-static]";
7379
+ function shellEscape(value) {
7380
+ return value.replace(/["\\`$]/g, "\\$&");
7381
+ }
7377
7382
  async function preUploadStatic(options) {
7378
7383
  try {
7379
7384
  const { appId } = options;
@@ -7386,8 +7391,8 @@ async function preUploadStatic(options) {
7386
7391
  console.error(`${LOG_PREFIX2} preUploadStatic \u8FD4\u56DE\u5F02\u5E38, status_code: ${response.status_code}`);
7387
7392
  return;
7388
7393
  }
7389
- const { downloadUrlPrefix, uploadPrefix, uploadID, uploadCredential } = response.data || {};
7390
- if (!downloadUrlPrefix || !uploadPrefix || !uploadID) {
7394
+ const { downloadURLPrefix, uploadPrefix, uploadID, uploadCredential } = response.data || {};
7395
+ if (!downloadURLPrefix || !uploadPrefix || !uploadID) {
7391
7396
  console.error(`${LOG_PREFIX2} preUploadStatic \u8FD4\u56DE\u6570\u636E\u4E0D\u5B8C\u6574`);
7392
7397
  return;
7393
7398
  }
@@ -7395,13 +7400,13 @@ async function preUploadStatic(options) {
7395
7400
  console.error(`${LOG_PREFIX2} preUploadStatic \u8FD4\u56DE\u7684\u51ED\u8BC1\u5B57\u6BB5\u4E0D\u5B8C\u6574`);
7396
7401
  return;
7397
7402
  }
7398
- console.log(`export STATIC_ASSETS_BASE_URL="${downloadUrlPrefix}"`);
7399
- console.log(`export STATIC_UPLOAD_PREFIX="${uploadPrefix}"`);
7400
- console.log(`export STATIC_UPLOAD_ID="${uploadID}"`);
7401
- console.log(`export STATIC_UPLOAD_AK="${uploadCredential.AccessKeyID}"`);
7402
- console.log(`export STATIC_UPLOAD_SK="${uploadCredential.SecretAccessKey}"`);
7403
- console.log(`export STATIC_UPLOAD_TOKEN="${uploadCredential.SessionToken}"`);
7404
- console.log(`export STATIC_UPLOAD_BUCKET_ID="${bucketId}"`);
7403
+ console.log(`export STATIC_ASSETS_BASE_URL="${shellEscape(downloadURLPrefix)}"`);
7404
+ console.log(`export STATIC_UPLOAD_PREFIX="${shellEscape(uploadPrefix)}"`);
7405
+ console.log(`export STATIC_UPLOAD_ID="${shellEscape(uploadID)}"`);
7406
+ console.log(`export STATIC_UPLOAD_AK="${shellEscape(uploadCredential.AccessKeyID)}"`);
7407
+ console.log(`export STATIC_UPLOAD_SK="${shellEscape(uploadCredential.SecretAccessKey)}"`);
7408
+ console.log(`export STATIC_UPLOAD_TOKEN="${shellEscape(uploadCredential.SessionToken)}"`);
7409
+ console.log(`export STATIC_UPLOAD_BUCKET_ID="${shellEscape(bucketId)}"`);
7405
7410
  console.error(`${LOG_PREFIX2} \u73AF\u5883\u53D8\u91CF\u5DF2\u8F93\u51FA`);
7406
7411
  } catch (error) {
7407
7412
  const message = error instanceof Error ? error.message : String(error);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lark-apaas/fullstack-cli",
3
- "version": "1.1.28-alpha.1",
3
+ "version": "1.1.28-alpha.10",
4
4
  "description": "CLI tool for fullstack template management",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -19,46 +19,28 @@ print_time() {
19
19
  }
20
20
 
21
21
  # ==================== 步骤 0 ====================
22
- echo "🗑️ [0/6] 安装插件"
22
+ echo "🗑️ [0/5] 安装插件"
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/6] 更新 openapi 代码"
29
+ echo "📝 [1/5] 更新 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/6] 清理 dist 目录"
36
+ echo "🗑️ [2/5] 清理 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/6] 预上传:获取 TOS 信息并注入环境变量"
44
- STEP_START=$(node -e "console.log(Date.now())")
45
-
46
- if [ -d "$ROOT_DIR/shared/static" ] && [ "$(ls -A "$ROOT_DIR/shared/static" 2>/dev/null)" ]; then
47
- eval "$(npx fullstack-cli build pre-upload-static --app-id "${app_id}")"
48
- if [ -n "$STATIC_ASSETS_BASE_URL" ]; then
49
- echo " STATIC_ASSETS_BASE_URL=$STATIC_ASSETS_BASE_URL"
50
- else
51
- echo " ⚠️ 未获取到 TOS URL 前缀,将使用默认路径"
52
- fi
53
- else
54
- echo " 跳过:shared/static 目录不存在或为空"
55
- fi
56
-
57
- print_time $STEP_START
58
- echo ""
59
-
60
- # ==================== 步骤 4 ====================
61
- echo "🔨 [4/6] 并行构建 server 和 client"
43
+ echo "🔨 [3/5] 并行构建 server 和 client"
62
44
  STEP_START=$(node -e "console.log(Date.now())")
63
45
 
64
46
  # 并行构建
@@ -95,18 +77,23 @@ echo " ✅ Client 构建完成"
95
77
  print_time $STEP_START
96
78
  echo ""
97
79
 
98
- # ==================== 步骤 5 ====================
99
- echo "📦 [5/6] 准备 server 依赖产物"
80
+ # ==================== 步骤 4 ====================
81
+ echo "📦 [4/5] 准备 server 依赖产物"
100
82
  STEP_START=$(node -e "console.log(Date.now())")
101
83
 
102
84
  mkdir -p "$OUT_DIR/dist/client"
103
85
 
104
- # 拷贝 HTML
105
- cp "$ROOT_DIR/dist/client/"*.html "$OUT_DIR/dist/client/" || true
86
+ # 移动 HTML(从 dist/client 移走,避免残留)
87
+ mv "$ROOT_DIR/dist/client/"*.html "$OUT_DIR/dist/client/" || true
106
88
 
107
89
  # 拷贝 run.sh 文件
108
90
  cp "$ROOT_DIR/scripts/run.sh" "$OUT_DIR/"
109
91
 
92
+ # 拷贝 .env 文件(如果存在)
93
+ if [ -f "$ROOT_DIR/.env" ]; then
94
+ cp "$ROOT_DIR/.env" "$OUT_DIR/"
95
+ fi
96
+
110
97
  # 清理无用文件
111
98
  rm -rf "$ROOT_DIR/dist/scripts"
112
99
  rm -rf "$ROOT_DIR/dist/tsconfig.node.tsbuildinfo"
@@ -114,8 +101,8 @@ rm -rf "$ROOT_DIR/dist/tsconfig.node.tsbuildinfo"
114
101
  print_time $STEP_START
115
102
  echo ""
116
103
 
117
- # ==================== 步骤 6 ====================
118
- echo "✂️ [6/6] 智能依赖裁剪"
104
+ # ==================== 步骤 5 ====================
105
+ echo "✂️ [5/5] 智能依赖裁剪"
119
106
  STEP_START=$(node -e "console.log(Date.now())")
120
107
 
121
108
  # 分析实际依赖、复制并裁剪 node_modules、生成精简的 package.json