@bleedingdev/modern-js-main-doc 3.2.0-ultramodern.98 → 3.4.0-ultramodern.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.
Files changed (101) hide show
  1. package/docs/en/apis/app/commands.mdx +59 -69
  2. package/docs/en/community/blog/v2-release-note.mdx +5 -5
  3. package/docs/en/community/blog/v3-release-note.mdx +1 -1
  4. package/docs/en/community/releases.mdx +1 -5
  5. package/docs/en/components/build-output.mdx +1 -1
  6. package/docs/en/components/debug-app.mdx +1 -1
  7. package/docs/en/components/deploy-command.mdx +3 -3
  8. package/docs/en/components/init-app.mdx +23 -51
  9. package/docs/en/components/prerequisites.mdx +1 -1
  10. package/docs/en/components/serve-command.mdx +3 -3
  11. package/docs/en/configure/app/bff/effect.mdx +27 -3
  12. package/docs/en/configure/app/performance/rsdoctor.mdx +7 -4
  13. package/docs/en/configure/app/tools/ts-checker.mdx +30 -2
  14. package/docs/en/configure/app/usage.mdx +6 -6
  15. package/docs/en/guides/advanced-features/bff/data-platform.mdx +3 -1
  16. package/docs/en/guides/advanced-features/bff/frameworks.mdx +3 -1
  17. package/docs/en/guides/advanced-features/international/api.mdx +1 -1
  18. package/docs/en/guides/advanced-features/international/configuration.mdx +1 -1
  19. package/docs/en/guides/advanced-features/international/locale-detection.mdx +1 -1
  20. package/docs/en/guides/advanced-features/international/routing.mdx +5 -3
  21. package/docs/en/guides/advanced-features/web-server.mdx +12 -0
  22. package/docs/en/guides/basic-features/debug/rsdoctor.mdx +2 -3
  23. package/docs/en/guides/basic-features/debug/using-storybook.mdx +1 -1
  24. package/docs/en/guides/basic-features/deploy.mdx +14 -14
  25. package/docs/en/guides/basic-features/env-vars.mdx +2 -2
  26. package/docs/en/guides/basic-features/render/_meta.json +1 -10
  27. package/docs/en/guides/basic-features/render/overview.mdx +0 -1
  28. package/docs/en/guides/basic-features/render/rsc.mdx +0 -1
  29. package/docs/en/guides/basic-features/routes/config-routes.mdx +2 -2
  30. package/docs/en/guides/basic-features/routes/routes.mdx +25 -10
  31. package/docs/en/guides/basic-features/testing/rstest.mdx +29 -0
  32. package/docs/en/guides/concept/server.mdx +2 -2
  33. package/docs/en/guides/get-started/quick-start.mdx +1 -1
  34. package/docs/en/guides/get-started/ultramodern.mdx +135 -26
  35. package/docs/en/guides/topic-detail/module-federation/application.mdx +1 -1
  36. package/docs/en/guides/topic-detail/module-federation/deploy.mdx +2 -2
  37. package/docs/en/guides/topic-detail/module-federation/usage.mdx +5 -5
  38. package/docs/en/guides/troubleshooting/builder.mdx +1 -1
  39. package/docs/en/guides/upgrade/config.mdx +1 -2
  40. package/docs/en/guides/upgrade/other.mdx +4 -4
  41. package/docs/zh/apis/app/commands.mdx +56 -66
  42. package/docs/zh/community/blog/v2-release-note.mdx +5 -5
  43. package/docs/zh/community/blog/v3-release-note.mdx +1 -1
  44. package/docs/zh/community/releases.mdx +1 -5
  45. package/docs/zh/components/build-output.mdx +1 -1
  46. package/docs/zh/components/debug-app.mdx +1 -1
  47. package/docs/zh/components/deploy-command.mdx +3 -3
  48. package/docs/zh/components/init-app.mdx +16 -47
  49. package/docs/zh/components/prerequisites.mdx +1 -1
  50. package/docs/zh/components/serve-command.mdx +3 -3
  51. package/docs/zh/configure/app/bff/effect.mdx +26 -2
  52. package/docs/zh/configure/app/performance/rsdoctor.mdx +7 -4
  53. package/docs/zh/configure/app/tools/ts-checker.mdx +30 -2
  54. package/docs/zh/configure/app/usage.mdx +6 -6
  55. package/docs/zh/guides/advanced-features/bff/data-platform.mdx +3 -1
  56. package/docs/zh/guides/advanced-features/bff/frameworks.mdx +3 -1
  57. package/docs/zh/guides/advanced-features/international/api.mdx +1 -1
  58. package/docs/zh/guides/advanced-features/international/configuration.mdx +1 -1
  59. package/docs/zh/guides/advanced-features/international/locale-detection.mdx +1 -1
  60. package/docs/zh/guides/advanced-features/international/routing.mdx +5 -3
  61. package/docs/zh/guides/advanced-features/web-server.mdx +12 -0
  62. package/docs/zh/guides/basic-features/debug/rsdoctor.mdx +2 -3
  63. package/docs/zh/guides/basic-features/debug/using-storybook.mdx +1 -1
  64. package/docs/zh/guides/basic-features/deploy.mdx +13 -13
  65. package/docs/zh/guides/basic-features/env-vars.mdx +2 -2
  66. package/docs/zh/guides/basic-features/render/_meta.json +1 -10
  67. package/docs/zh/guides/basic-features/render/overview.mdx +0 -1
  68. package/docs/zh/guides/basic-features/render/rsc.mdx +0 -1
  69. package/docs/zh/guides/basic-features/routes/config-routes.mdx +2 -2
  70. package/docs/zh/guides/basic-features/routes/routes.mdx +25 -10
  71. package/docs/zh/guides/basic-features/testing/rstest.mdx +29 -0
  72. package/docs/zh/guides/concept/server.mdx +2 -2
  73. package/docs/zh/guides/get-started/quick-start.mdx +1 -1
  74. package/docs/zh/guides/get-started/ultramodern.mdx +121 -22
  75. package/docs/zh/guides/topic-detail/module-federation/application.mdx +1 -1
  76. package/docs/zh/guides/topic-detail/module-federation/deploy.mdx +2 -2
  77. package/docs/zh/guides/topic-detail/module-federation/usage.mdx +5 -5
  78. package/docs/zh/guides/troubleshooting/builder.mdx +1 -1
  79. package/docs/zh/guides/upgrade/config.mdx +1 -2
  80. package/docs/zh/guides/upgrade/other.md +4 -4
  81. package/package.json +17 -14
  82. package/rspress.config.ts +17 -5
  83. package/src/components/Footer/index.tsx +3 -3
  84. package/src/components/Footer/styles.module.scss +1 -1
  85. package/src/components/Mermaid/style.scss +52 -52
  86. package/src/components/RandomMemberList/index.module.scss +8 -8
  87. package/src/components/SecondaryTitle/index.module.css +7 -2
  88. package/src/components/ShowcaseList/index.module.scss +1 -1
  89. package/src/components/ShowcaseList/useShowcases.ts +23 -65
  90. package/src/i18n/enUS.ts +0 -9
  91. package/src/i18n/zhCN.ts +0 -9
  92. package/src/pages/index.module.scss +6 -6
  93. package/src/sandbox/csr-auth/src/routes/page-tsx.txt +1 -1
  94. package/static/img/logo.svg +7 -0
  95. package/static/img/social-card.svg +12 -0
  96. package/builder-doc/docs/en/config/performance/rsdoctor.md +0 -37
  97. package/builder-doc/docs/zh/config/performance/rsdoctor.md +0 -37
  98. package/docs/en/guides/basic-features/render/tanstack-rsc.mdx +0 -226
  99. package/docs/zh/guides/basic-features/render/tanstack-rsc.mdx +0 -226
  100. package/main-doc/docs/en/guides/get-started/ultramodern.mdx +0 -403
  101. package/main-doc/docs/zh/guides/get-started/ultramodern.mdx +0 -363
@@ -1,363 +0,0 @@
1
- ---
2
- title: UltraModern.js V3
3
- sidebar_position: 6
4
- ---
5
-
6
- # UltraModern.js V3 与 Modern.js V3 的完整差异
7
-
8
- UltraModern.js V3 记录的是一套“更强默认值的 Modern.js 参考档案”,目标是服务于大型、可独立部署的 Super App / ERP 场景。
9
-
10
- 本文是这套已文档化 V3 档案的完整公开差异说明。
11
-
12
- ## 范围(仅 V3)
13
-
14
- - 基线版本:Modern.js `release-v3.x`。
15
- - 覆盖范围:UltraModern.js V3 已落地的全部用户可见差异。
16
- - 不包含:未进入 V3 发布线的主线路线图能力。
17
-
18
- ## 完整差异矩阵(V3)
19
-
20
- | 领域 | Modern.js V3 基线 | UltraModern.js V3 差异 | V3 状态 | 备注 |
21
- | --- | --- | --- | --- | --- |
22
- | 构建诊断默认行为 | 大多数项目中 RsDoctor 为显式开启 | Rspack 生产构建默认开启 RsDoctor | 已实现 | 可通过 `performance.rsdoctor` 关闭 |
23
- | 构建诊断配置面 | 框架文档无 `performance.rsdoctor` | 新增 `performance.rsdoctor`(`boolean` 或 `{ enabled, disableClientServer, reportDir, mode }`) | 已实现 | `disableClientServer` 默认 `true` |
24
- | 诊断产物契约 | 无标准化机器可读诊断入口 | 新增 `.rsdoctor/ultramodern-diagnostics.json`,用于定位 manifest | 已实现 | 便于编码代理稳定消费诊断数据 |
25
- | 静态资源预压缩默认行为 | 预压缩产物与回源策略通常由业务自定义 | 生产 Web 构建默认开启 `output.precompress`,并在 Node 静态中间件按 `Accept-Encoding` 协商 `.br` / `.gz` | 已实现 | 可按 codec 关闭或细调 |
26
- | 路由运行时选型 | 默认运行时路径以 React Router 为中心 | 新增 TanStack Router 运行时与 CLI 路由树支持 | 已实现 | React Router 路径仍保留 |
27
- | 脚手架模板选型 | 默认 create 模板以 React Router 起步路径为中心 | 新增 TanStack-ready 与 Tailwind-ready 的 create 模板 | 已实现 | React Router 起步路径仍保留 |
28
- | Starter 预设 Gate 工作流 | 生成脚手架默认没有 UltraModern 预设校验工作流 | 在公开预设 starter 中新增 `ultramodern:check`、可关闭 env 开关与 `.github/workflows/ultramodern-gates.yml` | 已实现 | 让生成应用从第一笔提交起就可审计 |
29
- | BFF Producer 契约标识 | `bff` 配置不包含 producer 身份 | 新增 `bff.requestId`,并打通到客户端生成链路 | 已实现 | 支持显式 producer 隔离 |
30
- | BFF 生成客户端签名 | `createRequest(...)` 可选参数到 `fetch` 结束 | 配置 `requestId` 时,生成代码会附加 `requestId` 参数 | 已实现 | 未配置时保持兼容旧路径 |
31
- | `create-request` 运行时隔离 | 单一可变请求配置 | 以 `requestId` 为维度隔离 request/domain/header 配置 | 已实现 | 支持同一应用多 producer |
32
- | BFF 审计关联 Header | 缺少标准化 producer 操作/追踪上下文透传 | 新增 `x-operation-id`、`x-modernjs-bff-operation-context` 与 `traceparent` 传播并解析 trace 标识 | 已实现 | 便于租户/操作/追踪链路关联观测 |
33
- | 未初始化 producer 行为 | 缺失配置时可能隐式 fallback | 非默认 `requestId` 未初始化会抛 `ProducerClientNotInitializedError` | 已实现 | 跨项目 BFF fail-fast |
34
- | Node 侧透传 Header 行为 | Header 透传是全局路径 | 仅 `requestId === 'default'` 会透传入站请求头 | 已实现 | 避免 producer 间请求头串扰 |
35
- | 服务端 Telemetry 配置 | 缺少统一 `server.telemetry` 契约 | 新增 `server.telemetry`(采样/批处理/脱敏/导出器) | 已实现 | 同步扩展 app-tools schema 与 server types |
36
- | Telemetry 导出器 | 导出链路依赖业务自建 | 内置 OTLP 与 VictoriaMetrics 导出器 | 已实现 | 导出失败不会中断请求链路 |
37
- | Telemetry 背压契约 | 无统一队列策略 | 内置队列上限、丢弃计数、定时 flush | 已实现 | 背压时上报 `telemetry.queue.dropped` |
38
- | Metrics 与 Trace 关联 | SSR metrics 不解析 W3C trace 上下文 | 解析 `traceparent` 并注入 `trace_id` / `span_id` 标签 | 已实现 | 提升跨系统观测关联度 |
39
- | 应用级 MF SSR 合约开关 | 无专门 app-level MF SSR 稳定性契约开关 | 新增 `server.ssr.moduleFederationAppSSR`,并在检测到 MF SSR 标记时自动启用环境变量握手 | 已实现 | 注入 `process.env.MODERN_MF_APP_SSR` |
40
- | 应用级 MF SSR 运行时桥接 | 非稳定默认桥接路径 | V3 在「服务端渲染 + MF 标记」场景下提供稳定桥接默认行为 | 已实现 | 保留显式关闭路径 |
41
- | MF vertical 加载可靠性契约 | 加载重试/降级策略通常由业务自管 | 新增 timeout/network/contract-error 的确定性降级矩阵与分布式 OTEL 连续性断言 | 已实现 | 对应 `routes-tanstack-mf` 可靠性套件 |
42
- | BFF 运行时选型 | Modern.js V3 基线仅提供 Hono 运行时路径(无内建 Effect 运行时) | 将 Effect 设为默认运行时,并采用严格运行时拆分(`effect` -> `api/effect`,`hono` -> `api/lambda`),同时补齐 Effect-Schema-only MF 数据契约与 failure-injection 覆盖 | 已实现(Effect 默认 + 严格拆分) | 该流明确不引入 Zod |
43
- | 模块 SDK 合约产物 | 无框架级模块契约产物 | 新增机器可读模块家族契约与类型化模块 SDK 接口 | 已实现 | `module-sdk-contracts.json` + `moduleSdk.d.ts` |
44
- | 边界反模式 CI 守卫 | 无专门边界反模式工作流 | 新增基于 profile 的边界检查(导入边界/必需钩子/模块禁用模式) | 已实现 | `.github/workflows/boundary-anti-patterns.yml` |
45
- | 发布 / 模块认证 Gate 自动化 | 基线无 super-app 证据化 gate profile | 新增 RC + 模块认证 gate profile、证据元数据校验与专用 CI 工作流 | 已实现 | `.github/workflows/release-contract-gates.yml` + 模块/Bun gate 工作流 |
46
- | 合约测试覆盖 | 基线中无上述差异项配套测试 | 增加 RsDoctor、BFF requestId、Telemetry、SSR MF 合约环境变量的针对性测试 | 已实现 | 降低 super-app 场景回归风险 |
47
- | 公开文档面 | 无 UltraModern V3 差异总览页 | 新增 V3 专用差异页并补齐关联配置文档 | 已实现 | 本页作为这套公开预设档案的参考页 |
48
-
49
- ## V3 详细差异说明
50
-
51
- ### 1) `performance.rsdoctor` 与默认开启诊断
52
-
53
- UltraModern.js V3 扩展了性能配置:
54
-
55
- - `performance.rsdoctor: boolean | { enabled?: boolean; disableClientServer?: boolean; reportDir?: string; mode?: 'normal' | 'brief' | 'lite' }`
56
- - Rspack + 生产环境:默认开启。
57
- - Rspack + 开发环境:默认关闭(可显式开启)。
58
- - Webpack 构建:不会注入 RsDoctor 插件。
59
- - RsDoctor 契约产物:
60
- - `<reportDir 或 outputPath>/.rsdoctor/ultramodern-diagnostics.json`
61
- - 用于指向 `.rsdoctor/manifest.json`
62
-
63
- ```ts title="modern.config.ts"
64
- export default defineConfig({
65
- performance: {
66
- rsdoctor: {
67
- enabled: true,
68
- disableClientServer: true,
69
- reportDir: './artifacts',
70
- mode: 'brief',
71
- },
72
- },
73
- });
74
- ```
75
-
76
- ### 2) 通过 `requestId` 强化跨项目 BFF 契约
77
-
78
- UltraModern.js V3 在 BFF 工具链中引入显式 producer 身份:
79
-
80
- - `bff.requestId` 配置项。
81
- - Loader/客户端生成链路将 `requestId` 传递给 `createRequest(...)`。
82
- - `create-request` 运行时以 `requestId` 为粒度隔离状态。
83
-
84
- ```ts
85
- configure({
86
- requestId: 'erp-inventory',
87
- request: customFetch,
88
- setDomain: ({ target, requestId }) =>
89
- target === 'server'
90
- ? `http://inventory-bff.internal`
91
- : `https://inventory.example.com`,
92
- });
93
- ```
94
-
95
- V3 合约行为:
96
-
97
- - 非默认 `requestId` 若未先 `configure({ requestId })`,会抛出 `ProducerClientNotInitializedError`。
98
- - `allowedHeaders` / `request` / `setDomain` 都按 `requestId` 隔离。
99
- - Node 运行时仅在 legacy 的 `default` producer 路径透传入站请求头。
100
- - 非默认 producer 调用会自动携带操作与追踪关联 Header:
101
- - `x-operation-id`
102
- - `x-modernjs-bff-operation-context`
103
- - `traceparent`(存在时会在 operation context 中反映 `traceId` / `spanId`)
104
-
105
- ### 3) `server.telemetry` 标准化与导出器
106
-
107
- UltraModern.js V3 新增统一 telemetry 契约:
108
-
109
- - 在 `server.telemetry` 提供配置面。
110
- - 内置 registry,支持采样、批处理、脱敏、背压控制。
111
- - 内置 OTLP 与 VictoriaMetrics 导出器。
112
- - 对 `emitCounter` / `emitTimer` 自动镜像 telemetry envelope。
113
-
114
- ```ts title="modern.config.ts"
115
- export default defineConfig({
116
- server: {
117
- telemetry: {
118
- enabled: true,
119
- service: 'erp-gateway',
120
- module: 'server',
121
- environment: 'production',
122
- samplingRate: 1,
123
- flushIntervalMs: 1000,
124
- maxBatchSize: 50,
125
- maxQueueSize: 1000,
126
- redactionKeys: ['authorization', 'token'],
127
- exporters: {
128
- otlp: {
129
- enabled: true,
130
- endpoint: 'http://otel-collector:4318/v1/logs',
131
- },
132
- victoriaMetrics: {
133
- enabled: true,
134
- endpoint: 'http://vm:8428/api/v1/import/prometheus',
135
- metricPrefix: 'ultramodern',
136
- },
137
- },
138
- },
139
- },
140
- });
141
- ```
142
-
143
- V3 重要行为:
144
-
145
- - 若没有启用任何导出器,telemetry 管线不会初始化。
146
- - 导出器异常按非致命处理,不会阻断请求主链路。
147
-
148
- ### 4) SSR metrics 的 Trace 标签注入
149
-
150
- 当请求携带 W3C `traceparent` 时,UltraModern.js V3 会在 SSR metrics 标签中注入:
151
-
152
- - `trace_id`
153
- - `span_id`
154
-
155
- 用于提升应用指标与分布式追踪系统之间的关联能力。
156
-
157
- ### 5) 应用级 MF SSR 稳定契约(`server.ssr.moduleFederationAppSSR`)
158
-
159
- UltraModern.js V3 新增:
160
-
161
- - 首选开关:`server.ssr.moduleFederationAppSSR`(`server.ssrByEntries` 同样生效)。
162
- - 编译期全局变量:
163
- - `process.env.MODERN_MF_APP_SSR`(`'true' | 'false'`)
164
-
165
- ```ts title="modern.config.ts"
166
- export default defineConfig({
167
- server: {
168
- ssr: {
169
- moduleFederationAppSSR: true,
170
- },
171
- },
172
- });
173
- ```
174
-
175
- 当检测到 MF SSR 标记且启用了服务端渲染时,V3 会自动进入同一套稳定合约路径;如需灰度,可通过配置/环境变量显式关闭。
176
-
177
- ### 6) V3 的合约级测试加固
178
-
179
- UltraModern.js V3 新增了以下关键测试覆盖:
180
-
181
- - RsDoctor 默认行为与显式开关。
182
- - BFF `requestId` 生成与运行时隔离、fail-fast 行为。
183
- - Telemetry 脱敏、背压与导出器行为。
184
- - SSR 分阶段契约识别与环境变量注入。
185
-
186
- ### 7) 模块 SDK 合约与边界反模式守卫
187
-
188
- UltraModern.js V3 新增用于模块准入与平台边界治理的产物:
189
-
190
- - 模块契约产物:`docs/super-app-rfc-adr/contracts/module-sdk-contracts.json`
191
- - 模块 manifest 示例:`docs/super-app-rfc-adr/contracts/module-manifest.example.json`
192
- - 类型契约:`packages/toolkit/types/common/moduleSdk.d.ts`
193
- - 校验工具:
194
- - `scripts/module-sdk-contracts/validate-module-sdk-contracts.js`
195
- - `scripts/boundary-guards/check-boundary-violations.js`
196
- - CI 工作流:
197
- - `.github/workflows/boundary-anti-patterns.yml`
198
- - `.github/workflows/module-certification-gates.yml`
199
- - `.github/workflows/bun-superapp-smoke.yml`
200
-
201
- ### 8) 默认预压缩与预压缩静态资源回源
202
-
203
- UltraModern.js V3 调整了生产 Web 产物的默认行为:
204
-
205
- - app-tools 默认 `output.precompress: true`。
206
- - 构建阶段会产出 gzip(`.gz`)与 brotli(`.br`)静态资源。
207
- - Node 静态中间件按 `Accept-Encoding` 协商并设置:
208
- - `Content-Encoding`
209
- - `Vary: Accept-Encoding`
210
- - 支持按项目维度细调 `gzip` / `brotli` 选项。
211
-
212
- ```ts title="modern.config.ts"
213
- export default defineConfig({
214
- output: {
215
- precompress: {
216
- gzip: true,
217
- brotli: {
218
- threshold: 8 * 1024,
219
- },
220
- },
221
- },
222
- });
223
- ```
224
-
225
- ### 9) TanStack Router + Tailwind 一等支持
226
-
227
- UltraModern.js V3 在运行时与脚手架层面补齐了 TanStack 路径:
228
-
229
- - 运行时/CLI 支持 TanStack 路由树生成与 SSR/stream 集成。
230
- - Create 模板补齐 TanStack 与 Tailwind 初始化能力。
231
- - 配套集成测试覆盖:
232
- - `tests/integration/routes-tanstack`
233
- - `tests/integration/routes-tanstack-mf`
234
- - 既有 React Router 工作流继续保持可用。
235
-
236
- ### 10) Effect-first MF 数据可靠性与数据平台契约
237
-
238
- UltraModern.js V3 对应 Beads Stream D 落地了额外可靠性能力:
239
-
240
- - `@modern-js/plugin-bff` 运行时路径迁移到 Effect v4。
241
- - MF 数据拉取契约采用 Effect-only 指导(该流明确不引入 Zod)。
242
- - MF vertical 加载可靠性矩阵覆盖 timeout/network/contract error 的确定性注入场景。
243
- - build 与 serve 路径重新启用分布式 trace 连续性断言。
244
- - 数据平台架构补齐 operation identity、请求/水合 envelope 完整性、scope key 与失效路由契约。
245
-
246
- 参考资料:
247
-
248
- - `docs/super-app-rfc-adr/ADR-0003-effect-only-mf-data-fetch-reliability.md`
249
- - `packages/cli/plugin-bff/docs/data-platform-architecture.md`
250
- - `routes-tanstack-mf` 可靠性覆盖
251
-
252
- ### 11) 发布与模块认证 Gate 模型
253
-
254
- 这套公开 UltraModern 预设在基线 Modern.js V3 之外补齐了可机审的发布 gate:
255
-
256
- - Gate profile:
257
- - `scripts/release-gates/rc-contract-profile.json`
258
- - `scripts/release-gates/module-certification-profile.json`
259
- - 证据目录契约:
260
- - `docs/super-app-rfc-adr/evidence/release-candidate/current`
261
- - `docs/super-app-rfc-adr/evidence/module-certification/current`
262
- - 本地校验命令:
263
- - `pnpm run validate:module-sdk-contracts`
264
- - `pnpm run validate:boundary-guards`
265
- - `pnpm run validate:module-certification-gates`
266
- - `pnpm run validate:rc-gates`
267
- - `pnpm run validate:bun-smoke`
268
- - CI 工作流:
269
- - `.github/workflows/release-contract-gates.yml`
270
- - `.github/workflows/module-certification-gates.yml`
271
- - `.github/workflows/bun-superapp-smoke.yml`
272
- - 生成 starter 自带工作流:
273
- - `.github/workflows/ultramodern-gates.yml`
274
- - 默认执行 `pnpm run ultramodern:check` 与 `pnpm run build`
275
-
276
- ## 不属于 UltraModern.js V3 的能力
277
-
278
- 以下能力刻意不纳入这套公开 V3 预设档案:
279
-
280
- - 将应用级 MF SSR 强制为所有应用的默认路径。
281
- - 将 Effect-only 数据获取运行时强制为所有应用的默认路径。
282
-
283
- ## 人类工作流
284
-
285
- 公开的 BleedingDev create 包默认从简单路径开始。默认命令会创建一个
286
- 可上线的 UltraModern 单应用,包含 `presetUltramodern(...)`、SSR、
287
- TanStack Router、Tailwind CSS v4、i18n、Effect BFF、生成质量 gate,以及
288
- Cloudflare 部署基础:
289
-
290
- ```bash
291
- pnpm dlx @bleedingdev/modern-js-create myapp
292
- cd myapp
293
- mise install
294
- mise exec -- pnpm install
295
- mise exec -- pnpm ultramodern:check
296
- ```
297
-
298
- 只有当独立归属边界有实际价值时,才创建 SuperApp workspace:
299
-
300
- ```bash
301
- pnpm dlx @bleedingdev/modern-js-create my-super-app --ultramodern-workspace
302
- cd my-super-app
303
- mise install
304
- mise exec -- pnpm install
305
- mise exec -- pnpm ultramodern:check
306
- ```
307
-
308
- 真实业务边界出现后,再添加对应 MicroVertical:
309
-
310
- ```bash
311
- pnpm dlx @bleedingdev/modern-js-create transportation --vertical
312
- pnpm dlx @bleedingdev/modern-js-create food-delivery --vertical
313
- pnpm dlx @bleedingdev/modern-js-create payments --vertical
314
- pnpm dlx @bleedingdev/modern-js-create maps --vertical
315
- mise exec -- pnpm ultramodern:check
316
- ```
317
-
318
- `--vertical` 会修改当前 workspace:创建 vertical 包,并更新 topology 元数据、
319
- ownership 记录、shell Module Federation、开发 overlays、包依赖、生成契约、
320
- 端口、路由归属 i18n、CSS 隔离,以及 vertical 自己拥有的 Effect BFF/client surface。
321
-
322
- 生成应用和 vertical 沿用正常的 Modern.js SSR 路径。SuperApp workspace 在需要
323
- Module Federation SSR 时会加入 `server.ssr.moduleFederationAppSSR`,但这个开关是
324
- 显式契约,不是所有应用的强制要求。
325
-
326
- 每个应用都会产出 `src/routes/ultramodern-route-metadata` 和
327
- `ultramodernLocalisedUrls`。i18n 插件在 `localeDetection.localisedUrls` 中读取它,
328
- 并从 `/locales/{{lng}}/{{ns}}.json` 提供动态后端 JSON。
329
-
330
- 生成契约会在 `.modernjs/ultramodern-generated-contract.json` 中写入
331
- `cssFederation`:共享 design tokens 保留在 `packages/shared-design-tokens`,
332
- shell CSS 拥有 shell layer,每个 vertical 拥有自己的 CSS layer 与应用本地前缀,
333
- SSR 首屏使用 Modern/Rspack 产物和 manifest 归属的 vertical CSS。
334
-
335
- 生成 workspace 包含 `scripts/proof-cloudflare-version.mjs`,用于 live Cloudflare 和
336
- Zephyr 证据。Live 证明需要公开 Worker URL 和 Zephyr 凭据;本地检查仍可校验
337
- 生成契约、构建、Cloudflare 输出、dry-run Zephyr 证据计划和本地证据 schema。
338
-
339
- BleedingDev 包通过 GitHub Actions trusted publishing 发布。公开发布 workflow 不使用
340
- 长期 npm token;不要从开发机器手动发布包。
341
-
342
- ## 基线开关(可按需关闭)
343
-
344
- 生成的 `presetUltramodern(...)` create 模板会开启更严格的平台契约。以下环境变量会在生成的 `modern.config.ts` 中读取,可按应用或按环境关闭/覆盖:
345
-
346
- - `MODERN_BASELINE_ENABLE_MF_SSR`(默认:`true`):开启应用级 MF SSR 基线契约(`server.ssr.mode: 'stream'` + `moduleFederationAppSSR`)。应用不使用 app-level MF SSR 或希望先走普通 SSR/CSR 路径时可关闭。
347
- - `MODERN_BASELINE_ENABLE_BFF_REQUEST_ID`(默认:`true`):开启默认 BFF producer 身份契约(`bff.requestId`)。应用不需要跨项目 producer 隔离时可关闭。
348
- - `MODERN_BASELINE_ENABLE_TELEMETRY_EXPORTERS`(默认:`true`):在基线配置中启用 telemetry 导出器。当前环境还没有 telemetry 后端时可关闭。
349
- - `MODERN_BASELINE_APP_ID`(默认:`basename(process.cwd())`):覆盖基线 `bff.requestId` 身份。需要固定、可治理的统一 producer ID 命名时建议设置。
350
- - `MODERN_TELEMETRY_OTLP_ENDPOINT`(默认:`http://127.0.0.1:4318/v1/logs`):OTLP 导出端点。接入其他 OTLP collector 地址时覆盖。
351
- - `MODERN_TELEMETRY_VICTORIA_ENDPOINT`(默认:`http://127.0.0.1:8428/api/v1/import/prometheus`):VictoriaMetrics 导出端点。接入其他 VM 写入地址时覆盖。
352
- - `MODERN_TELEMETRY_FAIL_LOUD_STARTUP`(默认:`true`):导出器健康检查失败时启动即失败(fail-loud)。本地/开发环境希望 telemetry 故障不阻断启动时可关闭。
353
-
354
- ## 相关公开文档
355
-
356
- - [performance.rsdoctor](/configure/app/performance/rsdoctor)
357
- - [server.ssr](/configure/app/server/ssr)
358
- - [BFF 指南](/guides/advanced-features/bff/index)
359
- - [BFF 运行时框架](/guides/advanced-features/bff/frameworks)
360
- - [BFF Data Platform 架构](/guides/advanced-features/bff/data-platform)
361
- - [BFF Effect 运行时配置](/configure/app/bff/effect)
362
- - [微前端指南](/guides/topic-detail/micro-frontend/c01-introduction)
363
- - [Module Federation SSR](/guides/topic-detail/module-federation/ssr)