@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 +19 -14
- package/package.json +1 -1
- package/templates/scripts/build.sh +15 -28
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 {
|
|
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
|
-
|
|
7354
|
-
|
|
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
|
-
|
|
7360
|
-
|
|
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 {
|
|
7390
|
-
if (!
|
|
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="${
|
|
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
|
@@ -19,46 +19,28 @@ print_time() {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
# ==================== 步骤 0 ====================
|
|
22
|
-
echo "🗑️ [0/
|
|
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/
|
|
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/
|
|
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 "
|
|
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
|
-
# ==================== 步骤
|
|
99
|
-
echo "📦 [5
|
|
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
|
-
#
|
|
105
|
-
|
|
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
|
-
# ==================== 步骤
|
|
118
|
-
echo "✂️ [
|
|
104
|
+
# ==================== 步骤 5 ====================
|
|
105
|
+
echo "✂️ [5/5] 智能依赖裁剪"
|
|
119
106
|
STEP_START=$(node -e "console.log(Date.now())")
|
|
120
107
|
|
|
121
108
|
# 分析实际依赖、复制并裁剪 node_modules、生成精简的 package.json
|