@lark-apaas/coding-template-nestjs-react-fullstack 0.1.0-alpha.1 → 0.1.0-alpha.2
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
CHANGED
package/template/package.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"customToaster": true
|
|
10
10
|
},
|
|
11
11
|
"scripts": {
|
|
12
|
-
"dev": "
|
|
12
|
+
"dev": "./scripts/dev.sh",
|
|
13
13
|
"dev:server": "NODE_ENV=development nest start --watch",
|
|
14
14
|
"dev:client": "NODE_ENV=development vite --config vite.config.ts",
|
|
15
15
|
"gen:db-schema": "npx -y @lark-apaas/db-schema-sync@latest --output server/database/schema.ts --export-custom-types",
|
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
"type:check:server": "tsc --noEmit --project tsconfig.node.json",
|
|
30
30
|
"lint": "node ./scripts/lint.js",
|
|
31
31
|
"format": "prettier --write \"{server,client,test}/**/*.{js,ts,tsx,json,md}\"",
|
|
32
|
-
"
|
|
32
|
+
"precommit": "node scripts/hooks/run-precommit.js",
|
|
33
|
+
"upgrade": "npx -y @lark-apaas/fullstack-cli sync --disable-gen-openapi"
|
|
33
34
|
},
|
|
34
35
|
"dependencies": {
|
|
35
36
|
"@lark-apaas/fullstack-nestjs-core": "^1.1.22",
|
package/template/scripts/dev.sh
CHANGED
|
@@ -1,2 +1,32 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
|
|
2
|
+
# `npm run dev` 入口;按 IS_SANDBOX 分发:
|
|
3
|
+
# - IS_SANDBOX=1(沙箱平台注入)→ 先 fullstack-cli sync 同步平台脚本,再跑 dev.js
|
|
4
|
+
# (保活 / restart loop / 文件日志 —— 沙箱生产形态)
|
|
5
|
+
# - 否则(本地)→ 跑 dev-local.sh:纯 stdout、崩了就崩、Agent 友好
|
|
6
|
+
# 显式想跑本地路径可用 `npm run dev:local`(绕过 IS_SANDBOX)。
|
|
7
|
+
set -euo pipefail
|
|
8
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
9
|
+
|
|
10
|
+
if [ "${IS_SANDBOX:-}" = "1" ] || [ "${IS_SANDBOX:-}" = "true" ]; then
|
|
11
|
+
# 沙箱前置同步:fullstack-cli sync 把平台管控的 scripts/ + 部分 package.json 字段同步过来。
|
|
12
|
+
# 不直接调 `fullstack-cli`,走 `npm run upgrade` 享 package.json 里的入口定义(与 prepublish
|
|
13
|
+
# 之类的钩子一致);后续若 upgrade 脚本换实现,dev 路径自动跟随。
|
|
14
|
+
npm run upgrade
|
|
15
|
+
exec node "$SCRIPT_DIR/dev.js" "$@"
|
|
16
|
+
fi
|
|
17
|
+
|
|
18
|
+
if [ ! -x "$SCRIPT_DIR/dev-local.sh" ]; then
|
|
19
|
+
echo "[dev] scripts/dev-local.sh 缺失或不可执行;先跑 \`miaoda app upgrade\` 同步平台脚本" >&2
|
|
20
|
+
exit 1
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
# 本地启动前先跑一次 miaoda app upgrade:同步 platform-controlled 内容 + 升 @lark-apaas/* 到
|
|
24
|
+
# 最新 alpha + 迁移老 npm scripts。沙箱不走这里(IS_SANDBOX 分支已经 return)。miaoda 缺失时
|
|
25
|
+
# 软失败(agent 环境可能没装),靠用户自己保证 .env.local / scripts 现状能跑。
|
|
26
|
+
if command -v miaoda >/dev/null 2>&1; then
|
|
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
|
|
31
|
+
|
|
32
|
+
exec "$SCRIPT_DIR/dev-local.sh" "$@"
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// FULLSTACK_PRECOMMIT_V1
|
|
3
|
+
'use strict';
|
|
4
|
+
|
|
5
|
+
const { spawnSync } = require('node:child_process');
|
|
6
|
+
|
|
7
|
+
const SEP = ' ' + '─'.repeat(36);
|
|
8
|
+
|
|
9
|
+
function failAndExit(step, body) {
|
|
10
|
+
process.stderr.write('\n✗ pre-commit failed: ' + step + '\n');
|
|
11
|
+
process.stderr.write(SEP + '\n');
|
|
12
|
+
if (body && body.length > 0) {
|
|
13
|
+
process.stderr.write(body.replace(/\s+$/, '') + '\n');
|
|
14
|
+
}
|
|
15
|
+
process.stderr.write(SEP + '\n');
|
|
16
|
+
process.stderr.write(' bypass: git commit --no-verify\n');
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function runLint() {
|
|
21
|
+
const cwd = process.cwd();
|
|
22
|
+
const res = spawnSync('npm', ['run', 'lint'], {
|
|
23
|
+
cwd,
|
|
24
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
25
|
+
env: process.env,
|
|
26
|
+
});
|
|
27
|
+
if (res.error) {
|
|
28
|
+
failAndExit('lint', String(res.error.message || res.error));
|
|
29
|
+
}
|
|
30
|
+
if (res.status !== 0) {
|
|
31
|
+
const stdout = res.stdout ? res.stdout.toString() : '';
|
|
32
|
+
const stderr = res.stderr ? res.stderr.toString() : '';
|
|
33
|
+
failAndExit('lint', stdout + '\n' + stderr);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
runLint();
|