@tbox.cn/app-template-h5 0.1.16 → 0.1.17
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/AGENTS.md +12 -8
- package/README.md +3 -3
- package/apps/client/index.html +1 -1
- package/package.json +2 -2
- package/pnpm-lock.template.yaml +8 -26
- package/pnpm-workspace.template.yaml +3 -3
- package/scripts/dev.sh +4 -1
package/AGENTS.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# AGENTS.md
|
|
2
2
|
|
|
3
|
-
template-h5 是面向 AI 生成
|
|
3
|
+
template-h5 是面向 AI 生成 Web 应用的单 workspace 模板:`apps/client`(React/Vite)+ `apps/server`(Express)。
|
|
4
4
|
|
|
5
5
|
## 工程结构
|
|
6
6
|
|
|
7
7
|
| 包 | 职责 |
|
|
8
8
|
|---|---|
|
|
9
|
-
| `apps/client` | React/Vite
|
|
9
|
+
| `apps/client` | React/Vite Web 页面与业务入口(@app/client) |
|
|
10
10
|
| `apps/server` | Express API:健康检查、静态托管、inspector(@app/server) |
|
|
11
11
|
| `scripts/` | 平台生命周期脚本(prepare/dev/start/stop/build 固定名契约)与工程守卫 |
|
|
12
12
|
|
|
@@ -52,16 +52,20 @@ apps/server/src/dev.ts # vite dev 入口(仅 tsx 运行;
|
|
|
52
52
|
- `apps/server/tests` 契约测试随模板分发勿删(health/JSON 404 断言);client 业务面测试由应用自建——模板出厂零 client 测试文件(`passWithNoTests` 保绿,新增测试后本约定不变)
|
|
53
53
|
- 服务端凭证/环境变量不进 client bundle(客户端环境值仅 `import.meta.env.VITE_*` 且经 `configureRuntime` 注入)
|
|
54
54
|
|
|
55
|
-
##
|
|
55
|
+
## 端形态决策(先于样式开发)
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
57
|
+
模板不预设端形态——适配策略由应用自定。开发前先从用户需求确认目标端(PC / 移动 / 自适应 / 嵌入壳);未明确声明移动端或小程序壳时按通用 Web 处理:默认满幅流式布局,**勿给内容套限宽居中壳**(限宽列、居中窄条、大触区属移动形态决策,仅在用户明确要求时采用)。
|
|
58
|
+
|
|
59
|
+
## web-view 嵌入约定(仅用户明确要求嵌入支付宝小程序 web-view 壳时适用)
|
|
60
|
+
|
|
61
|
+
1. **滚动容器隐藏滚动条**(`::-webkit-scrollbar { display: none }`)——移动端无常驻滚动条,内层滚动容器冒出的滚动条与设计不符。
|
|
62
|
+
2. **避免 CSS Color 4+ 新颜色语法**——`color-mix()` / `oklch()` / 空格分隔 `rgb(r g b / a)` 在低版本 web-view 内核整条声明失效(不降级、直接消失);用 `rgba()`、`#hex` 等传统语法。
|
|
63
|
+
|
|
64
|
+
未声明嵌入 = 以上两条不适用,勿为兼容壳预写任何样式。另注:大写 `PX` 不是 web-view 约定——它只是 postcss-pxtorem 类构建管线的转义写法(本模板无此管线,应用自建时才相关)。
|
|
61
65
|
|
|
62
66
|
## 边界
|
|
63
67
|
|
|
64
68
|
- 保持单 workspace 的 `apps/client` + `apps/server` 两成员;不新增 `apps/client/` 之外的 Vite 配置或嵌套 lockfile(`pnpm check:workspace` 校验)。
|
|
65
69
|
- 无模块/Provider/主题装配面:缺双端 `apps/*/src/modules.ts`——`npx --yes @tbox.cn/app-cli module add`、`npx --yes @tbox.cn/app-cli new module`、`npx --yes @tbox.cn/app-cli new provider` 会被 CLI 直接拒绝;`npx --yes @tbox.cn/app-cli theme use` 因无主题接线点也不适用。
|
|
66
|
-
-
|
|
70
|
+
- 全局样式挂点 = `apps/client/src/styles/base.css`(仅设备无关卫生规则);端形态决策见上节。
|
|
67
71
|
- 结构、路由、命令、依赖或环境变量变化时同步 README 与本文件。
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# template-h5
|
|
2
2
|
|
|
3
|
-
tbox
|
|
3
|
+
tbox Web 全栈模板(包名 `@tbox.cn/app-template-h5`,h5 为家族历史名——不预设端形态),单 workspace:`apps/client`(React/Vite)+ `apps/server`(Express)。运行时与页面微调经 `@tbox.cn/app-sdk-client` / `@tbox.cn/app-sdk-server`。
|
|
4
4
|
|
|
5
5
|
## 快速开始
|
|
6
6
|
|
|
@@ -9,12 +9,12 @@ pnpm install
|
|
|
9
9
|
pnpm dev
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
开发期浏览器访问 `http://localhost:8000`(单端口:API + 页面 + HMR)。`server` 负责 API、健康检查与生产静态托管,`client` 负责
|
|
12
|
+
开发期浏览器访问 `http://localhost:8000`(单端口:API + 页面 + HMR)。`server` 负责 API、健康检查与生产静态托管,`client` 负责 Web 页面与业务入口。
|
|
13
13
|
|
|
14
14
|
## 生成新应用
|
|
15
15
|
|
|
16
16
|
```sh
|
|
17
|
-
npx --yes @tbox.cn/app-cli create . --name my-
|
|
17
|
+
npx --yes @tbox.cn/app-cli create . --name my-web-app --source @tbox.cn/app-template-h5
|
|
18
18
|
pnpm install
|
|
19
19
|
```
|
|
20
20
|
|
package/apps/client/index.html
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<!-- 基础视口;全屏 safe-area(viewport-fit=cover + env() 补偿)由应用成对启用 -->
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
7
|
-
<title>
|
|
7
|
+
<title>Web 应用</title>
|
|
8
8
|
<!-- 平台微调(inspector) runtime:由 server 提供 GET /__vs_inspector__.js;dev 下经 Vite 代理到 server。 -->
|
|
9
9
|
<script src="/__vs_inspector__.js" defer></script>
|
|
10
10
|
</head>
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tbox.cn/app-template-h5",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "tbox
|
|
3
|
+
"version": "0.1.17",
|
|
4
|
+
"description": "tbox Web 全栈模板(单 workspace:apps/client + apps/server;h5 为家族历史名,不预设端形态),运行时与页面微调经 @tbox.cn/app-sdk。",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
7
7
|
"node": ">=24.0.0 <25.0.0"
|
package/pnpm-lock.template.yaml
CHANGED
|
@@ -7,8 +7,8 @@ settings:
|
|
|
7
7
|
catalogs:
|
|
8
8
|
default:
|
|
9
9
|
'@tbox.cn/app-sdk-client':
|
|
10
|
-
specifier: 0.21.
|
|
11
|
-
version: 0.21.
|
|
10
|
+
specifier: 0.21.4
|
|
11
|
+
version: 0.21.4
|
|
12
12
|
'@tbox.cn/app-sdk-server':
|
|
13
13
|
specifier: 0.26.2
|
|
14
14
|
version: 0.26.2
|
|
@@ -97,7 +97,7 @@ importers:
|
|
|
97
97
|
dependencies:
|
|
98
98
|
'@tbox.cn/app-sdk-client':
|
|
99
99
|
specifier: 'catalog:'
|
|
100
|
-
version: 0.21.
|
|
100
|
+
version: 0.21.4
|
|
101
101
|
react:
|
|
102
102
|
specifier: 'catalog:'
|
|
103
103
|
version: 18.3.1
|
|
@@ -955,10 +955,6 @@ packages:
|
|
|
955
955
|
'@standard-schema/spec@1.1.0':
|
|
956
956
|
resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
|
|
957
957
|
|
|
958
|
-
'@tbox.cn/app-contracts@0.13.0':
|
|
959
|
-
resolution: {integrity: sha512-8sqP/23MoUlbTX9enFNotP5bu7XKFfigDUJ6sEn1Ff2a0rRlSTWzLWmDv9lP70cfZMPjh4MHoLKFoukr8QPvMA==}
|
|
960
|
-
engines: {node: '>=20.0.0'}
|
|
961
|
-
|
|
962
958
|
'@tbox.cn/app-contracts@0.13.2':
|
|
963
959
|
resolution: {integrity: sha512-0lY9g29ice7xYbmV5XDnEiMmM70jvSzeK2cciUZVpzHgGykWqZiPRlqXIGkIRY7uObDQ1cICHC4mS67HuNQ8Jg==}
|
|
964
960
|
engines: {node: '>=20.0.0'}
|
|
@@ -967,12 +963,8 @@ packages:
|
|
|
967
963
|
resolution: {integrity: sha512-P16LFd+ZzIASrujs6fyaOEwRnsLg7Lh5k1qOVDNblmohrvUbVIOK5ntn+7mupJxnjK7SY43RUT4mtWtfM85/rQ==}
|
|
968
964
|
engines: {node: '>=20.0.0'}
|
|
969
965
|
|
|
970
|
-
'@tbox.cn/app-sdk-client@0.21.
|
|
971
|
-
resolution: {integrity: sha512-
|
|
972
|
-
engines: {node: '>=20.0.0'}
|
|
973
|
-
|
|
974
|
-
'@tbox.cn/app-sdk-core@0.20.4':
|
|
975
|
-
resolution: {integrity: sha512-4kcoxnZnPgsO0RwAsjsodOXRhZNQcr9r3INN3Z03/JR2e3E+izkW2YHsgGcdbVSVX81s8gZrkaBbE+xco3wSqg==}
|
|
966
|
+
'@tbox.cn/app-sdk-client@0.21.4':
|
|
967
|
+
resolution: {integrity: sha512-Vbk0593RGWGIVgGiR1xNOF8x62z+2/Ix6NRTHURhdrLLB1pOIFlixm4AHn9d/noyaItiXTND55OeOTAaTEJQcQ==}
|
|
976
968
|
engines: {node: '>=20.0.0'}
|
|
977
969
|
|
|
978
970
|
'@tbox.cn/app-sdk-core@0.20.5':
|
|
@@ -2825,12 +2817,6 @@ snapshots:
|
|
|
2825
2817
|
|
|
2826
2818
|
'@standard-schema/spec@1.1.0': {}
|
|
2827
2819
|
|
|
2828
|
-
'@tbox.cn/app-contracts@0.13.0':
|
|
2829
|
-
dependencies:
|
|
2830
|
-
'@ag-ui/core': 0.0.47
|
|
2831
|
-
react: 18.3.1
|
|
2832
|
-
zod: 3.25.76
|
|
2833
|
-
|
|
2834
2820
|
'@tbox.cn/app-contracts@0.13.2':
|
|
2835
2821
|
dependencies:
|
|
2836
2822
|
'@ag-ui/core': 0.0.47
|
|
@@ -2843,17 +2829,13 @@ snapshots:
|
|
|
2843
2829
|
react: 18.3.1
|
|
2844
2830
|
zod: 3.25.76
|
|
2845
2831
|
|
|
2846
|
-
'@tbox.cn/app-sdk-client@0.21.
|
|
2832
|
+
'@tbox.cn/app-sdk-client@0.21.4':
|
|
2847
2833
|
dependencies:
|
|
2848
|
-
'@tbox.cn/app-contracts': 0.13.
|
|
2849
|
-
'@tbox.cn/app-sdk-core': 0.20.
|
|
2834
|
+
'@tbox.cn/app-contracts': 0.13.3
|
|
2835
|
+
'@tbox.cn/app-sdk-core': 0.20.5
|
|
2850
2836
|
react: 18.3.1
|
|
2851
2837
|
react-dom: 18.3.1(react@18.3.1)
|
|
2852
2838
|
|
|
2853
|
-
'@tbox.cn/app-sdk-core@0.20.4':
|
|
2854
|
-
dependencies:
|
|
2855
|
-
'@tbox.cn/app-contracts': 0.13.0
|
|
2856
|
-
|
|
2857
2839
|
'@tbox.cn/app-sdk-core@0.20.5':
|
|
2858
2840
|
dependencies:
|
|
2859
2841
|
'@tbox.cn/app-contracts': 0.13.2
|
|
@@ -34,12 +34,12 @@ catalog:
|
|
|
34
34
|
express: 4.22.2
|
|
35
35
|
"@types/express": 4.17.25
|
|
36
36
|
"@tbox.cn/app-sdk-core": 0.20.5
|
|
37
|
-
"@tbox.cn/app-sdk-client": 0.21.
|
|
37
|
+
"@tbox.cn/app-sdk-client": 0.21.4
|
|
38
38
|
"@tbox.cn/app-sdk-server": 0.26.2
|
|
39
39
|
"@tbox.cn/app-agent-sdk-server": 0.3.3
|
|
40
|
-
"@tbox.cn/app-agent-sdk-client": 0.2.
|
|
40
|
+
"@tbox.cn/app-agent-sdk-client": 0.2.1
|
|
41
41
|
"@tbox.cn/app-contracts": 0.13.3
|
|
42
|
-
"@tbox.cn/app-contracts-mall": 0.
|
|
42
|
+
"@tbox.cn/app-contracts-mall": 0.14.0
|
|
43
43
|
eslint: 9.39.5
|
|
44
44
|
typescript-eslint: 8.67.0
|
|
45
45
|
eslint-plugin-react-hooks: 5.2.0
|
package/scripts/dev.sh
CHANGED
|
@@ -6,7 +6,10 @@ PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
|
6
6
|
cd "$PROJECT_DIR"
|
|
7
7
|
echo "Project directory: $PROJECT_DIR"
|
|
8
8
|
|
|
9
|
+
echo "Installing dependencies..."
|
|
10
|
+
pnpm install
|
|
11
|
+
|
|
9
12
|
echo "Starting development server..."
|
|
10
13
|
echo " - http://localhost:8000 (API + 页面 + HMR)"
|
|
11
|
-
# 相对 filter
|
|
14
|
+
# 相对 filter:仓内直跑时名称 filter 会三模板同名命中(@app/server ×3)
|
|
12
15
|
pnpm --filter ./apps/server dev
|