@lark-apaas/coding-template-nestjs-react-fullstack 0.1.0-alpha.5 → 0.1.0-beta.0
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 +1 -1
- package/template/.env +0 -15
- package/template/scripts/dev-local.sh +17 -34
- package/template/scripts/dev.sh +12 -19
- package/template/tsconfig.node.json +2 -2
- package/template/.spark/meta.json +0 -1
package/package.json
CHANGED
package/template/.env
CHANGED
|
@@ -1,19 +1,4 @@
|
|
|
1
|
-
# Application
|
|
2
|
-
# Server Configuration (NestJS)
|
|
3
|
-
SUDA_DATABASE_URL=
|
|
4
|
-
# 后端 NestJS 监听端口(被 scripts/dev.js 和 server/main.ts 读取,默认 3000)
|
|
5
|
-
# SERVER_PORT=3000
|
|
6
|
-
|
|
7
|
-
# Client Configuration
|
|
8
|
-
# 前端 dev server (Vite/Rspack) 监听端口(被 scripts/dev.js 读取,默认 8080;
|
|
9
|
-
# 本地开发需改端口时取消注释,例如 8001)
|
|
10
|
-
# CLIENT_DEV_PORT=8080
|
|
11
|
-
|
|
12
1
|
# Logger
|
|
13
2
|
LOG_DIR=./logs
|
|
14
3
|
LOG_REQUEST_BODY=true
|
|
15
4
|
LOG_RESPONSE_BODY=true
|
|
16
|
-
|
|
17
|
-
# Framework build / lint mode(false = 严格)
|
|
18
|
-
FORCE_FRAMEWORK_BUILD_LOOSE_MODE=false
|
|
19
|
-
FORCE_FRAMEWORK_LINT_LOOSE_MODE=false
|
|
@@ -1,60 +1,43 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# ============================================================================
|
|
3
|
-
#
|
|
3
|
+
# 本地开发启动脚本(由 miaoda app sync 维护,请勿手改)
|
|
4
4
|
# Stack: nestjs-react-fullstack
|
|
5
|
-
#
|
|
5
|
+
# 流程:env pull → skills sync → 并发起 server + client
|
|
6
6
|
# ============================================================================
|
|
7
7
|
set -euo pipefail
|
|
8
8
|
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
9
9
|
cd "$ROOT_DIR"
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
warn() {
|
|
12
|
+
if [ -t 2 ]; then
|
|
13
|
+
printf '\033[33mWARNING: %s\033[0m\n' "$*" >&2
|
|
14
|
+
else
|
|
15
|
+
printf 'WARNING: %s\n' "$*" >&2
|
|
16
|
+
fi
|
|
17
|
+
}
|
|
12
18
|
|
|
13
|
-
#
|
|
14
|
-
# 让后续 miaoda 子命令(skills sync 等)走对的 scene。
|
|
19
|
+
# 应用 scene + 本地开发开关
|
|
15
20
|
export MIAODA_APP_TYPE="${MIAODA_APP_TYPE:-3}"
|
|
16
|
-
|
|
17
|
-
# 本地开发总开关:SDK(fullstack-vite-preset / fullstack-rspack-preset /
|
|
18
|
-
# fullstack-nestjs-core)据此启用本地兜底逻辑:
|
|
19
|
-
# - vite/rspack-preset:反代 /__runtime__ 到沙箱(带 cookie / webuser header)
|
|
20
|
-
# - nestjs-core:从 cookie 补 csrf header + 注入 webuser header
|
|
21
|
-
# 沙箱 dev / 生产不设此 env,SDK 行为完全不变。
|
|
22
21
|
export MIAODA_LOCAL_DEV=1
|
|
23
22
|
|
|
24
|
-
#
|
|
25
|
-
export MIAODA_NPM_REGISTRY="${MIAODA_NPM_REGISTRY:-https://registry.npmjs.org/}"
|
|
26
|
-
|
|
27
|
-
# === .env.local / .env 加载由 SDK 侧负责,本脚本不再手工 source ===
|
|
28
|
-
# fullstack-nestjs-core 在 module init 通过 dotenv 读 .env.local + .env;
|
|
29
|
-
# fullstack-{vite,rspack}-preset 的 defineConfig 同理。优先级:shell > .env.local > .env。
|
|
30
|
-
# 历史版本曾在这里用 bash 自写 parser,引号 / 多行 / 行尾注释处理不全且重复造轮子,已下放到 SDK。
|
|
31
|
-
|
|
32
|
-
# 1. 拉本地 dev 所需 ENV(jwt / cookie / sandbox URL 等,写入 .env.local)
|
|
33
|
-
# app_id 从 .spark/meta.json 读 —— `miaoda app init --app-id <id>` 时持久化的权威源,
|
|
34
|
-
# 后续 dev / sync 全部沿用这一个值;不在脚本里 hack 别的推断渠道。
|
|
35
|
-
# lark-cli 子命令真名是 `+env-pull`(带 + 前缀单 token,不是 `env pull` 空格分隔);
|
|
36
|
-
# `--as user` 必须显式:env-pull 只接受 user identity,默认 bot 会校验失败。
|
|
23
|
+
# 1. 拉本地开发环境变量到 .env.local
|
|
37
24
|
echo "[dev-local] (1/3) env pull..."
|
|
38
25
|
if command -v lark-cli >/dev/null 2>&1; then
|
|
39
|
-
# 用 node 读 .spark/meta.json,不引 python3 依赖(user app 必装 node)。
|
|
40
26
|
APP_ID=$(node -e 'try{process.stdout.write(JSON.parse(require("fs").readFileSync(".spark/meta.json","utf8")).app_id||"")}catch(e){}' 2>/dev/null || echo "")
|
|
41
27
|
if [ -n "$APP_ID" ]; then
|
|
42
|
-
lark-cli apps +env-pull --app-id "$APP_ID" --as user ||
|
|
28
|
+
lark-cli apps +env-pull --app-id "$APP_ID" --as user || warn "env pull 失败,继续按 .env.local 现状启动"
|
|
43
29
|
else
|
|
44
|
-
|
|
30
|
+
warn ".spark/meta.json 缺 app_id,请先跑 \`miaoda app init --app-id <id>\`"
|
|
45
31
|
fi
|
|
46
32
|
else
|
|
47
|
-
|
|
33
|
+
warn "lark-cli 未安装,跳过 env pull;请确保 .env.local 已就绪"
|
|
48
34
|
fi
|
|
49
35
|
|
|
50
|
-
# 2.
|
|
51
|
-
# 钉到 @alpha dist-tag 跟随最新发布,miaoda-cli 通道我们自己控制风险小。
|
|
36
|
+
# 2. 同步当前 stack 对应的 skills
|
|
52
37
|
echo "[dev-local] (2/3) miaoda skills sync..."
|
|
53
|
-
npx -y @lark-apaas/miaoda-cli@alpha skills sync || echo " (skills sync
|
|
38
|
+
npx -y @lark-apaas/miaoda-cli@alpha skills sync || echo " (skills sync 失败,继续启动)"
|
|
54
39
|
|
|
55
|
-
# 3.
|
|
56
|
-
# 端口、SANDBOX_* 等业务 env 由 SDK 内 dotenv 加载,不在 banner 里假装显示。
|
|
57
|
-
# 不走 scripts/dev.js(保活 / restart / 日志写文件那套)—— 本地崩就崩,错日志直接 stdout。
|
|
40
|
+
# 3. 并发起前后端 dev server
|
|
58
41
|
echo "[dev-local] (3/3) 并发起 dev:server + dev:client"
|
|
59
42
|
exec npx --no-install concurrently \
|
|
60
43
|
--names "server,client" --prefix-colors "blue,green" --kill-others-on-fail \
|
package/template/scripts/dev.sh
CHANGED
|
@@ -1,32 +1,25 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# `npm run dev` 入口;按
|
|
3
|
-
# -
|
|
4
|
-
# (保活 / restart loop / 文件日志 ——
|
|
5
|
-
#
|
|
6
|
-
#
|
|
2
|
+
# `npm run dev` 入口;按 SANDBOX_ID 是否非空判断运行环境:
|
|
3
|
+
# - SANDBOX_ID 非空(沙箱平台注入应用所属沙箱 ID)→ 直接跑 dev.js
|
|
4
|
+
# (保活 / restart loop / 文件日志 —— 沙箱生产形态)。脚本同步由平台 pod 启动阶段做过,
|
|
5
|
+
# dev 入口不再额外 `npm run upgrade`。
|
|
6
|
+
# - 否则(本地)→ 走 miaoda app sync 兜底 + 跑 dev-local.sh:纯 stdout、崩了就崩、Agent 友好。
|
|
7
|
+
# 显式想跑本地路径可用 `npm run dev:local`(绕过 SANDBOX_ID 判断)。
|
|
7
8
|
set -euo pipefail
|
|
8
9
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
9
10
|
|
|
10
|
-
if [
|
|
11
|
-
# 沙箱前置同步:fullstack-cli sync 把平台管控的 scripts/ + 部分 package.json 字段同步过来。
|
|
12
|
-
# 不直接调 `fullstack-cli`,走 `npm run upgrade` 享 package.json 里的入口定义(与 prepublish
|
|
13
|
-
# 之类的钩子一致);后续若 upgrade 脚本换实现,dev 路径自动跟随。
|
|
14
|
-
npm run upgrade
|
|
11
|
+
if [ -n "${SANDBOX_ID:-}" ]; then
|
|
15
12
|
exec node "$SCRIPT_DIR/dev.js" "$@"
|
|
16
13
|
fi
|
|
17
14
|
|
|
18
15
|
if [ ! -x "$SCRIPT_DIR/dev-local.sh" ]; then
|
|
19
|
-
echo "[dev] scripts/dev-local.sh 缺失或不可执行;先跑 \`miaoda app
|
|
16
|
+
echo "[dev] scripts/dev-local.sh 缺失或不可执行;先跑 \`npx -y @lark-apaas/miaoda-cli@alpha app sync\` 同步平台脚本" >&2
|
|
20
17
|
exit 1
|
|
21
18
|
fi
|
|
22
19
|
|
|
23
|
-
# 本地启动前先跑一次 miaoda app
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
|
|
27
|
-
miaoda app upgrade || echo "[dev] miaoda app upgrade 失败,按现状继续" >&2
|
|
28
|
-
else
|
|
29
|
-
echo "[dev] miaoda 未装,跳过 upgrade;建议 npm i -g @lark-apaas/miaoda-cli" >&2
|
|
30
|
-
fi
|
|
20
|
+
# 本地启动前先跑一次 miaoda app sync:同步 platform-controlled 内容 + 升 @lark-apaas/* 到
|
|
21
|
+
# 钉版 + 迁移老 npm scripts。沙箱不走这里(SANDBOX_ID 分支已经 exec return)。
|
|
22
|
+
# 走 npx 不依赖用户全局装 miaoda;钉到 @alpha dist-tag 跟随最新发布。
|
|
23
|
+
npx -y @lark-apaas/miaoda-cli@alpha app sync || echo "[dev] miaoda app sync 失败,按现状继续" >&2
|
|
31
24
|
|
|
32
25
|
exec "$SCRIPT_DIR/dev-local.sh" "$@"
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
"compilerOptions": {
|
|
4
4
|
"baseUrl": "./",
|
|
5
5
|
"outDir": "./dist",
|
|
6
|
+
"preserveWatchOutput": true,
|
|
6
7
|
"paths": {
|
|
7
8
|
"@server/*": ["server/*"],
|
|
8
9
|
"@shared/*": ["shared/*"],
|
|
9
10
|
}
|
|
10
11
|
},
|
|
11
12
|
"watchOptions": {
|
|
12
|
-
"excludeDirectories": ["node_modules/**"]
|
|
13
|
-
"preserveWatchOutput": true
|
|
13
|
+
"excludeDirectories": ["node_modules/**"]
|
|
14
14
|
},
|
|
15
15
|
"include": ["server/**/*", "shared/**/*.ts"],
|
|
16
16
|
"exclude": ["node_modules", "dist", "client", "**/*.spec.ts", "**/*.e2e-spec.ts"],
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"stack":"nestjs-react-fullstack"}
|