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.
@@ -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
- echo "VERSION=$VERSION" > .env_x_<%= projectName %>
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
- echo "VERSION=$VERSION" > .env_x_<%= projectName %>
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
- echo "VERSION=$VERSION" > .env_x_<%= projectName %>
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",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "generator-mico-cli",
3
- "version": "0.2.12",
3
+ "version": "0.2.13",
4
4
  "description": "Yeoman generator for Mico CLI projects",
5
5
  "keywords": [
6
6
  "yeoman-generator",