generator-mico-cli 0.2.12 → 0.2.13
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/generators/micro-react/templates/CICD/before_build.sh +76 -0
- package/generators/micro-react/templates/CICD/start_dev.sh +14 -1
- package/generators/micro-react/templates/CICD/start_prod.sh +13 -1
- package/generators/micro-react/templates/CICD/start_test.sh +14 -1
- package/generators/micro-react/templates/apps/layout/src/common/route-guard.ts +2 -2
- package/generators/micro-react/templates/package.json +3 -3
- package/package.json +1 -1
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# 计算当前构建分支的 BASE_REF,并为 Turbo 增量构建准备 TURBO_FILTER
|
|
4
|
+
# 该脚本会被其他脚本 source 调用,不要在这里直接 exit 1
|
|
5
|
+
|
|
6
|
+
set -e
|
|
7
|
+
|
|
8
|
+
# 获取项目根目录(如果调用方已设置 PROJECT_ROOT,则使用;否则使用当前工作目录)
|
|
9
|
+
PROJECT_ROOT="${PROJECT_ROOT:-$(pwd)}"
|
|
10
|
+
|
|
11
|
+
# 获取当前构建的分支(去掉 origin/ 前缀,用于比较)
|
|
12
|
+
# 优先使用环境变量 CURRENT_BRANCH(Jenkins 传入,格式可能是 origin/main、origin/feat/xxx)
|
|
13
|
+
# 其次使用 BRANCH_OR_TAG,最后从 git 获取
|
|
14
|
+
if [ -n "${CURRENT_BRANCH}" ]; then
|
|
15
|
+
CURRENT_BRANCH_NAME="${CURRENT_BRANCH#origin/}" # 去掉 origin/ 前缀
|
|
16
|
+
elif [ -n "${BRANCH_OR_TAG}" ]; then
|
|
17
|
+
CURRENT_BRANCH_NAME="${BRANCH_OR_TAG#origin/}" # 去掉 origin/ 前缀
|
|
18
|
+
else
|
|
19
|
+
CURRENT_BRANCH_NAME="$(git rev-parse --abbrev-ref HEAD)"
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
echo "[before_build] Current branch (without origin/): ${CURRENT_BRANCH_NAME}"
|
|
23
|
+
|
|
24
|
+
# 比较当前分支和上次成功构建的分支是否一致
|
|
25
|
+
# LAST_SUCCESS_BRANCH 由 Jenkins 在构建时设置(从上次构建的结果中获取,格式可能是 origin/main、origin/feat/xxx)
|
|
26
|
+
if [ -n "${LAST_SUCCESS_BRANCH}" ]; then
|
|
27
|
+
# 去掉 LAST_SUCCESS_BRANCH 的 origin/ 前缀,用于比较
|
|
28
|
+
LAST_SUCCESS_BRANCH_NAME="${LAST_SUCCESS_BRANCH#origin/}"
|
|
29
|
+
echo "[before_build] Last success branch (without origin/): ${LAST_SUCCESS_BRANCH_NAME}"
|
|
30
|
+
|
|
31
|
+
if [ "${CURRENT_BRANCH_NAME}" != "${LAST_SUCCESS_BRANCH_NAME}" ]; then
|
|
32
|
+
# 分支不一致,需要全量构建
|
|
33
|
+
echo "[before_build] Branch changed: ${LAST_SUCCESS_BRANCH_NAME} -> ${CURRENT_BRANCH_NAME}, will perform full build (no filter)"
|
|
34
|
+
unset TURBO_FILTER
|
|
35
|
+
else
|
|
36
|
+
# 分支一致,尝试使用 PREVIOUS_COMMIT 进行增量构建
|
|
37
|
+
echo "[before_build] Branch unchanged: ${CURRENT_BRANCH_NAME}, checking PREVIOUS_COMMIT for incremental build"
|
|
38
|
+
if [ -n "${PREVIOUS_COMMIT}" ]; then
|
|
39
|
+
# 验证 commit 是否存在且有效
|
|
40
|
+
if git rev-parse --verify "${PREVIOUS_COMMIT}" >/dev/null 2>&1; then
|
|
41
|
+
# 关键检查:验证 PREVIOUS_COMMIT 是否是当前 HEAD 的祖先
|
|
42
|
+
# 这可以避免以下问题:
|
|
43
|
+
# 1. Rebase/Force push:PREVIOUS_COMMIT 不再是当前分支的祖先
|
|
44
|
+
# 2. Tag 被其他分支更新:PREVIOUS_COMMIT 不是当前分支的祖先
|
|
45
|
+
CURRENT_HEAD="$(git rev-parse HEAD)"
|
|
46
|
+
if git merge-base --is-ancestor "${PREVIOUS_COMMIT}" "${CURRENT_HEAD}" 2>/dev/null; then
|
|
47
|
+
# PREVIOUS_COMMIT 是当前 HEAD 的祖先,可以安全使用
|
|
48
|
+
BASE_REF="${PREVIOUS_COMMIT}"
|
|
49
|
+
echo "[before_build] Use PREVIOUS_COMMIT as BASE_REF: ${BASE_REF} (ancestor check passed)"
|
|
50
|
+
# 为 turbo --filter 准备语法形如 ...[<BASE_REF>]
|
|
51
|
+
TURBO_FILTER="...[${BASE_REF}]"
|
|
52
|
+
export TURBO_FILTER
|
|
53
|
+
echo "[before_build] TURBO_FILTER=${TURBO_FILTER} (incremental build)"
|
|
54
|
+
else
|
|
55
|
+
# PREVIOUS_COMMIT 不是当前 HEAD 的祖先,降级为全量构建
|
|
56
|
+
echo "[before_build] Warning: PREVIOUS_COMMIT=${PREVIOUS_COMMIT} is not an ancestor of HEAD=${CURRENT_HEAD}"
|
|
57
|
+
echo "[before_build] Possible reasons: rebase/force-push, tag updated by another branch, or shallow clone issue"
|
|
58
|
+
echo "[before_build] Falling back to full build (no filter)"
|
|
59
|
+
unset TURBO_FILTER
|
|
60
|
+
fi
|
|
61
|
+
else
|
|
62
|
+
echo "[before_build] Warning: PREVIOUS_COMMIT=${PREVIOUS_COMMIT} is not a valid commit, will perform full build"
|
|
63
|
+
unset TURBO_FILTER
|
|
64
|
+
fi
|
|
65
|
+
else
|
|
66
|
+
# PREVIOUS_COMMIT 未设置,进行全量构建
|
|
67
|
+
echo "[before_build] PREVIOUS_COMMIT not set, will perform full build (no filter)"
|
|
68
|
+
unset TURBO_FILTER
|
|
69
|
+
fi
|
|
70
|
+
fi
|
|
71
|
+
else
|
|
72
|
+
# LAST_SUCCESS_BRANCH 未设置,说明是第一次构建或 Jenkins 未配置该环境变量
|
|
73
|
+
echo "[before_build] LAST_SUCCESS_BRANCH not set, will perform full build (no filter)"
|
|
74
|
+
# 不设置 TURBO_FILTER,这样 package.json 中的 ${TURBO_FILTER:+--filter=${TURBO_FILTER}} 不会生效
|
|
75
|
+
unset TURBO_FILTER
|
|
76
|
+
fi
|
|
@@ -20,11 +20,24 @@ echo "项目版本: $VERSION"
|
|
|
20
20
|
# 切换到项目根目录,确保后续命令在根目录下运行
|
|
21
21
|
cd "$PROJECT_ROOT"
|
|
22
22
|
|
|
23
|
+
# 导出 PROJECT_ROOT 供 before_build.sh 使用
|
|
24
|
+
export PROJECT_ROOT
|
|
25
|
+
|
|
26
|
+
# 在执行构建前,计算 BASE_REF / TURBO_FILTER 等增量构建信息
|
|
27
|
+
if [ -f "$PROJECT_ROOT/CICD/before_build.sh" ]; then
|
|
28
|
+
# shellcheck disable=SC1090
|
|
29
|
+
source "$PROJECT_ROOT/CICD/before_build.sh"
|
|
30
|
+
fi
|
|
31
|
+
|
|
23
32
|
# 设置子应用的 CDN 公共路径(开发环境)
|
|
24
33
|
export CDN_PUBLIC_PATH="https://cdn-portal-dev.micoplatform.com/<%= projectName %>/${VERSION}/"
|
|
25
34
|
echo "CDN_PUBLIC_PATH: $CDN_PUBLIC_PATH"
|
|
26
35
|
|
|
27
36
|
pnpm run build:development
|
|
28
37
|
|
|
29
|
-
|
|
38
|
+
# 只有在 CI 环境时才写入版本号文件(覆盖写入)
|
|
39
|
+
if [ "${CI}" = "true" ]; then
|
|
40
|
+
echo "VERSION=$VERSION" > .env_x_portal-web
|
|
41
|
+
fi
|
|
42
|
+
|
|
30
43
|
|
|
@@ -20,11 +20,23 @@ echo "项目版本: $VERSION"
|
|
|
20
20
|
# 切换到项目根目录,确保后续命令在根目录下运行
|
|
21
21
|
cd "$PROJECT_ROOT"
|
|
22
22
|
|
|
23
|
+
# 导出 PROJECT_ROOT 供 before_build.sh 使用
|
|
24
|
+
export PROJECT_ROOT
|
|
25
|
+
|
|
26
|
+
# 在执行构建前,计算 BASE_REF / TURBO_FILTER 等增量构建信息(用于增量构建)
|
|
27
|
+
if [ -f "$PROJECT_ROOT/CICD/before_build.sh" ]; then
|
|
28
|
+
# shellcheck disable=SC1090
|
|
29
|
+
source "$PROJECT_ROOT/CICD/before_build.sh"
|
|
30
|
+
fi
|
|
31
|
+
|
|
23
32
|
# 设置子应用的 CDN 公共路径(生产环境)
|
|
24
33
|
export CDN_PUBLIC_PATH="https://cdn-portal.micoplatform.com/<%= projectName %>/${VERSION}/"
|
|
25
34
|
echo "CDN_PUBLIC_PATH: $CDN_PUBLIC_PATH"
|
|
26
35
|
|
|
27
36
|
pnpm run build:production
|
|
28
37
|
|
|
29
|
-
|
|
38
|
+
# 只有在 CI 环境时才写入版本号文件(覆盖写入)
|
|
39
|
+
if [ "${CI}" = "true" ]; then
|
|
40
|
+
echo "VERSION=$VERSION" > .env_x_portal-web
|
|
41
|
+
fi
|
|
30
42
|
|
|
@@ -20,11 +20,24 @@ echo "项目版本: $VERSION"
|
|
|
20
20
|
# 切换到项目根目录,确保后续命令在根目录下运行
|
|
21
21
|
cd "$PROJECT_ROOT"
|
|
22
22
|
|
|
23
|
+
# 导出 PROJECT_ROOT 供 before_build.sh 使用
|
|
24
|
+
export PROJECT_ROOT
|
|
25
|
+
|
|
26
|
+
# 在执行构建前,计算 BASE_REF / TURBO_FILTER 等增量构建信息
|
|
27
|
+
if [ -f "$PROJECT_ROOT/CICD/before_build.sh" ]; then
|
|
28
|
+
# shellcheck disable=SC1090
|
|
29
|
+
source "$PROJECT_ROOT/CICD/before_build.sh"
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
|
|
23
33
|
# 设置子应用的 CDN 公共路径(测试环境)
|
|
24
34
|
export CDN_PUBLIC_PATH="https://cdn-portal-test.micoplatform.com/<%= projectName %>/${VERSION}/"
|
|
25
35
|
echo "CDN_PUBLIC_PATH: $CDN_PUBLIC_PATH"
|
|
26
36
|
|
|
27
37
|
pnpm run build:testing
|
|
28
38
|
|
|
29
|
-
|
|
39
|
+
# 只有在 CI 环境时才写入版本号文件(覆盖写入)
|
|
40
|
+
if [ "${CI}" = "true" ]; then
|
|
41
|
+
echo "VERSION=$VERSION" > .env_x_portal-web
|
|
42
|
+
fi
|
|
30
43
|
|
|
@@ -298,7 +298,7 @@ if (typeof window !== 'undefined') {
|
|
|
298
298
|
return;
|
|
299
299
|
}
|
|
300
300
|
|
|
301
|
-
log('用户交互开始:', event.type);
|
|
301
|
+
// log('用户交互开始:', event.type);
|
|
302
302
|
isInUserInteraction = true;
|
|
303
303
|
// 记录交互开始时间,用于判断意图是否在当前交互期间设置的
|
|
304
304
|
currentInteractionStartTime = Date.now();
|
|
@@ -308,7 +308,7 @@ if (typeof window !== 'undefined') {
|
|
|
308
308
|
setTimeout(() => {
|
|
309
309
|
isInUserInteraction = false;
|
|
310
310
|
interactionEndTime = Date.now();
|
|
311
|
-
log('用户交互结束');
|
|
311
|
+
// log('用户交互结束');
|
|
312
312
|
}, 0);
|
|
313
313
|
}
|
|
314
314
|
};
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
"scripts": {
|
|
13
13
|
"dev": "node scripts/dev.js",
|
|
14
14
|
"build": "dotenv -e .env -e .env.local -e .env.production -e .env.production.local -- turbo run build && node scripts/collect-dist.js",
|
|
15
|
-
"build:development": "dotenv -e .env -e .env.local -e .env.development -e .env.development.local -- turbo run build:development && node scripts/collect-dist.js",
|
|
16
|
-
"build:testing": "dotenv -e .env -e .env.local -e .env.testing -e .env.testing.local -- turbo run build:testing && node scripts/collect-dist.js",
|
|
17
|
-
"build:production": "dotenv -e .env -e .env.local -e .env.production -e .env.production.local -- turbo run build:production && node scripts/collect-dist.js",
|
|
15
|
+
"build:development": "dotenv -e .env -e .env.local -e .env.development -e .env.development.local -- turbo run build:development ${TURBO_FILTER:+--filter=${TURBO_FILTER}} && node scripts/collect-dist.js",
|
|
16
|
+
"build:testing": "dotenv -e .env -e .env.local -e .env.testing -e .env.testing.local -- turbo run build:testing ${TURBO_FILTER:+--filter=${TURBO_FILTER}} && node scripts/collect-dist.js",
|
|
17
|
+
"build:production": "dotenv -e .env -e .env.local -e .env.production -e .env.production.local -- turbo run build:production ${TURBO_FILTER:+--filter=${TURBO_FILTER}} && node scripts/collect-dist.js",
|
|
18
18
|
"build:local": "dotenv -e .env -e .env.local -- turbo run build:local && node scripts/collect-dist.js",
|
|
19
19
|
"lint": "eslint . --ext .js,.jsx,.ts,.tsx && turbo run lint",
|
|
20
20
|
"lint:fix": "eslint . --ext .js,.jsx,.ts,.tsx --fix && turbo run lint:fix",
|