@bleedingdev/modern-js-main-doc 3.8.2-ultramodern.8 → 3.8.3-ultramodern.1
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/docs/en/components/prerequisites.mdx +1 -1
- package/docs/en/configure/app/bff/effect.mdx +7 -7
- package/docs/en/guides/get-started/ultramodern.mdx +105 -20
- package/docs/zh/components/prerequisites.mdx +1 -1
- package/docs/zh/configure/app/bff/effect.mdx +7 -7
- package/docs/zh/guides/get-started/ultramodern.mdx +98 -20
- package/package.json +2 -2
|
@@ -54,7 +54,7 @@ would give your app a second Effect identity. Before setting
|
|
|
54
54
|
`/effect-server`, `/effect-edge` or `/effect-client`, install the exact cohort:
|
|
55
55
|
|
|
56
56
|
```bash
|
|
57
|
-
pnpm add effect@4.0.0-
|
|
57
|
+
pnpm add effect@4.0.0-rc.112 @effect/opentelemetry@4.0.0-rc.112
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
The pin is exact because UltraModern ships Effect as one lockstep cohort. Apps
|
|
@@ -219,17 +219,17 @@ generated apps use:
|
|
|
219
219
|
|
|
220
220
|
```yaml
|
|
221
221
|
trustPolicyExclude:
|
|
222
|
-
- 'effect@4.0.0-
|
|
223
|
-
- '@effect/opentelemetry@4.0.0-
|
|
222
|
+
- 'effect@4.0.0-rc.112'
|
|
223
|
+
- '@effect/opentelemetry@4.0.0-rc.112'
|
|
224
224
|
|
|
225
225
|
overrides:
|
|
226
|
-
'@effect/opentelemetry': 4.0.0-
|
|
227
|
-
'@effect/vitest': 4.0.0-
|
|
228
|
-
effect: 4.0.0-
|
|
226
|
+
'@effect/opentelemetry': 4.0.0-rc.112
|
|
227
|
+
'@effect/vitest': 4.0.0-rc.112
|
|
228
|
+
effect: 4.0.0-rc.112
|
|
229
229
|
```
|
|
230
230
|
|
|
231
231
|
Do not add a different direct `effect` version in an app package. A mismatched
|
|
232
|
-
Effect
|
|
232
|
+
Effect prerelease can fail while building layers or HTTP middleware because runtime
|
|
233
233
|
services come from different package instances. The strict 24-hour release-age
|
|
234
234
|
gate applies to installed packages; the current cohort has no Effect age
|
|
235
235
|
exemption, and override-only `@effect/vitest` is not an installed approval
|
|
@@ -146,8 +146,8 @@ migration work: move code to `shared/api.ts`, `api/index.ts`, and
|
|
|
146
146
|
and `src/effect`.
|
|
147
147
|
|
|
148
148
|
Generated strict Effect workspaces pin the compatible Effect cohort with pnpm
|
|
149
|
-
overrides: `effect@4.0.0-
|
|
150
|
-
and `@effect/vitest@4.0.0-
|
|
149
|
+
overrides: `effect@4.0.0-rc.112`, `@effect/opentelemetry@4.0.0-rc.112`,
|
|
150
|
+
and `@effect/vitest@4.0.0-rc.112`. Do not add app-local direct Effect
|
|
151
151
|
versions that disagree with those overrides. The strict 24-hour release-age
|
|
152
152
|
gate applies to installed packages; this cohort carries no Effect age
|
|
153
153
|
exemption, and override-only `@effect/vitest` is not an installed approval
|
|
@@ -159,12 +159,21 @@ metadata transition; they are not release-age approvals.
|
|
|
159
159
|
|
|
160
160
|
| Surface | Pin |
|
|
161
161
|
| --- | --- |
|
|
162
|
-
| Effect runtime and test cohort | `effect`, `@effect/opentelemetry`, and `@effect/vitest`: `4.0.0-
|
|
163
|
-
| Effect compiler | `@effect/tsgo@0.
|
|
164
|
-
|
|
|
165
|
-
|
|
|
166
|
-
|
|
|
167
|
-
|
|
|
162
|
+
| Effect runtime and test cohort | `effect`, `@effect/opentelemetry`, and `@effect/vitest`: `4.0.0-rc.112` |
|
|
163
|
+
| Effect compiler | `@effect/tsgo@0.37.0` |
|
|
164
|
+
| Oxc and Ultracite | `oxlint@1.80.0`, `oxfmt@0.65.0`, `ultracite@7.10.6` |
|
|
165
|
+
| TanStack Router | `@tanstack/react-router@1.170.32`, `@tanstack/router-core@1.171.27`, `@tanstack/history@1.162.1` |
|
|
166
|
+
| Module Federation | `bridge-react`, `manifest`, `modern-js-v3`, and `rspack`: `2.9.0`; `@module-federation/node@2.7.50` |
|
|
167
|
+
| Tailwind CSS | `tailwindcss@4.3.3` |
|
|
168
|
+
| Node and package tooling | Node `26.7.0`, `@types/node@^26.2.0`, pnpm `11.24.0` |
|
|
169
|
+
|
|
170
|
+
Generated workspaces default to Module Federation bridge-react's router-free
|
|
171
|
+
base entry (`bridge.enableBridgeRouter: false`), with TanStack Router as the
|
|
172
|
+
application router. Declaring `react-router` (or `react-router-dom`) as a
|
|
173
|
+
direct dependency of an app marks it a React Router consumer: the
|
|
174
|
+
generator/migration then emit `enableBridgeRouter: true` for that app's
|
|
175
|
+
federation config, the workspace validator accepts it, and the UltraModern
|
|
176
|
+
preset aliases `react-router`'s entrypoints for the app's own routing.
|
|
168
177
|
|
|
169
178
|
Gradual migration means old, unmigrated Modern.js apps can keep their existing
|
|
170
179
|
runtime until they are converted. Once a surface is generated or migrated as
|
|
@@ -248,6 +257,94 @@ directories, and caches are isolated per app, build target, and Rspack
|
|
|
248
257
|
environment so local `build`, `cloudflare:build`, and multi-environment
|
|
249
258
|
compilers do not share mutable build state.
|
|
250
259
|
|
|
260
|
+
## Configure the public preset
|
|
261
|
+
|
|
262
|
+
Use `presetUltramodern(appConfig, presetOptions)` inside the normal Modern.js
|
|
263
|
+
`defineConfig` call:
|
|
264
|
+
|
|
265
|
+
```ts title="modern.config.ts"
|
|
266
|
+
import { defineConfig, presetUltramodern } from '@modern-js/app-tools';
|
|
267
|
+
|
|
268
|
+
export default defineConfig(
|
|
269
|
+
presetUltramodern(
|
|
270
|
+
{
|
|
271
|
+
output: {
|
|
272
|
+
precompress: false,
|
|
273
|
+
},
|
|
274
|
+
server: {
|
|
275
|
+
telemetry: {
|
|
276
|
+
failLoudStartup: true,
|
|
277
|
+
},
|
|
278
|
+
},
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
appId: 'catalog',
|
|
282
|
+
enableModuleFederationSSR: false,
|
|
283
|
+
enableTelemetryExporters: false,
|
|
284
|
+
},
|
|
285
|
+
),
|
|
286
|
+
);
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
The first argument is ordinary `AppUserConfig`. It contains app-owned config
|
|
290
|
+
and wins where it supplies an override. The second argument controls the
|
|
291
|
+
preset itself. Use its typed options, such as `enableBffRequestId: false`,
|
|
292
|
+
`enableTelemetry: false`, `enableTelemetryExporters: false`, and
|
|
293
|
+
`enableModuleFederationSSR: false`, to turn preset features off.
|
|
294
|
+
|
|
295
|
+
Composition follows the Modern.js config merge rules:
|
|
296
|
+
|
|
297
|
+
- Nested records merge, so changing one nested field keeps its preset
|
|
298
|
+
siblings.
|
|
299
|
+
- Scalars and `false` supplied by the app override preset values. Omitting a
|
|
300
|
+
field, or leaving it `undefined`, keeps the preset value.
|
|
301
|
+
- Arrays and config hooks compose in preset-first order. Non-function array
|
|
302
|
+
entries are deduplicated by deep equality, while function entries are all
|
|
303
|
+
retained. An empty array or empty record does not clear values already
|
|
304
|
+
supplied by the preset.
|
|
305
|
+
|
|
306
|
+
There is no generic reset sentinel. Use a typed preset option for preset-owned
|
|
307
|
+
behavior and a normal app config override for app-owned behavior.
|
|
308
|
+
|
|
309
|
+
`createPresetUltramodernConfig(options)` is an advanced API for inspecting or
|
|
310
|
+
materializing a fresh preset config. Do not spread its result into another
|
|
311
|
+
config object. Object spread is shallow, so replacing `server`, `output`, or
|
|
312
|
+
another nested record can silently discard preset siblings. Use
|
|
313
|
+
`presetUltramodern(...)` for authoring `modern.config.ts`.
|
|
314
|
+
|
|
315
|
+
### Bare preset and generated workspace policy
|
|
316
|
+
|
|
317
|
+
The preset and the workspace generator own different parts of the config:
|
|
318
|
+
|
|
319
|
+
| Source | Identity | Remaining config |
|
|
320
|
+
| --- | --- | --- |
|
|
321
|
+
| Bare `createPresetUltramodernConfig()` result | Uses `appId: 'app'` and has no `deliveryUnit` | Uses the preset defaults. Telemetry stays enabled, but no exporter is configured until its endpoint is set. |
|
|
322
|
+
| Generated app | Supplies the app-specific `appId` and stamped `deliveryUnit` | Inherits the other strict defaults from `presetUltramodern(...)`. |
|
|
323
|
+
| Application | Supplies the first `appConfig` argument | Overrides app-owned fields through the normal Modern.js merge. |
|
|
324
|
+
|
|
325
|
+
Keep the generated `appId` and `deliveryUnit` options intact. To change
|
|
326
|
+
preset-owned behavior, use typed options such as
|
|
327
|
+
`enableTelemetryExporters: false`,
|
|
328
|
+
`enableTelemetry: false`, `enableBffRequestId: false`, or
|
|
329
|
+
`enableModuleFederationSSR: false`. To change an app-owned field, put the
|
|
330
|
+
override in the first argument, as in the example above.
|
|
331
|
+
|
|
332
|
+
Telemetry exporter endpoints are unset by default:
|
|
333
|
+
|
|
334
|
+
- `MODERN_TELEMETRY_OTLP_ENDPOINT` enables only the OTLP exporter.
|
|
335
|
+
- `MODERN_TELEMETRY_VICTORIA_ENDPOINT` enables only the VictoriaMetrics
|
|
336
|
+
exporter.
|
|
337
|
+
- Setting both enables both. Leaving both unset keeps the telemetry pipeline
|
|
338
|
+
enabled without configuring an exporter.
|
|
339
|
+
|
|
340
|
+
The typed `otlpEndpoint` and `victoriaMetricsEndpoint` preset options provide
|
|
341
|
+
the same per-exporter behavior without environment variables.
|
|
342
|
+
|
|
343
|
+
```bash
|
|
344
|
+
MODERN_TELEMETRY_OTLP_ENDPOINT=https://otel.example.com/v1/logs \
|
|
345
|
+
mise exec -- pnpm dev
|
|
346
|
+
```
|
|
347
|
+
|
|
251
348
|
## Human Workflow
|
|
252
349
|
|
|
253
350
|
The public BleedingDev create package has one supported generated product. The
|
|
@@ -426,18 +523,6 @@ BleedingDev packages are published through GitHub Actions trusted publishing.
|
|
|
426
523
|
The public workflow is tokenless; do not publish packages manually from a
|
|
427
524
|
developer machine.
|
|
428
525
|
|
|
429
|
-
## Baseline Switches (Opt-out)
|
|
430
|
-
|
|
431
|
-
The generated `presetUltramodern(...)` starter enables strict platform contracts. Use these env switches to opt out per app or per environment:
|
|
432
|
-
|
|
433
|
-
- `MODERN_BASELINE_ENABLE_MF_SSR` (default: `true`): Enables app-level MF SSR baseline contract (`server.ssr.mode: 'stream'` + `moduleFederationAppSSR`). Disable when the app does not use app-level MF SSR, or when you need plain SSR/CSR behavior first.
|
|
434
|
-
- `MODERN_BASELINE_ENABLE_BFF_REQUEST_ID` (default: `true`): Enables default BFF producer identity contract (`bff.requestId`). Disable when the app does not need cross-project producer isolation.
|
|
435
|
-
- `MODERN_BASELINE_ENABLE_TELEMETRY_EXPORTERS` (default: `true`): Enables telemetry exporters in baseline config. Disable when the environment has no telemetry backend yet.
|
|
436
|
-
- `MODERN_BASELINE_APP_ID` (default: `basename(process.cwd())`): Overrides baseline `bff.requestId` identity. Set this when you need a fixed platform-wide producer ID convention.
|
|
437
|
-
- `MODERN_TELEMETRY_OTLP_ENDPOINT` (default: `http://127.0.0.1:4318/v1/logs`): OTLP exporter endpoint. Override when you route telemetry through a different collector endpoint.
|
|
438
|
-
- `MODERN_TELEMETRY_VICTORIA_ENDPOINT` (default: `http://127.0.0.1:8428/api/v1/import/prometheus`): VictoriaMetrics exporter endpoint. Override when you use a different VM ingress endpoint.
|
|
439
|
-
- `MODERN_TELEMETRY_FAIL_LOUD_STARTUP` (default: `true`): Fails startup if configured exporters fail startup health checks. Disable in local/dev environments where temporary telemetry outage should not block boot.
|
|
440
|
-
|
|
441
526
|
## Related Docs
|
|
442
527
|
|
|
443
528
|
- [BFF Runtime Frameworks](/guides/advanced-features/bff/frameworks)
|
|
@@ -53,7 +53,7 @@ import EnableBFFCaution from "@site-docs/components/enable-bff-caution";
|
|
|
53
53
|
`/effect-client` 之前,请安装精确版本的依赖组:
|
|
54
54
|
|
|
55
55
|
```bash
|
|
56
|
-
pnpm add effect@4.0.0-
|
|
56
|
+
pnpm add effect@4.0.0-rc.112 @effect/opentelemetry@4.0.0-rc.112
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
采用精确版本是因为 UltraModern 以锁步依赖组的方式发布 Effect。只使用
|
|
@@ -214,16 +214,16 @@ Effect 版本组。当前 UltraModern 版本组使用:
|
|
|
214
214
|
|
|
215
215
|
```yaml
|
|
216
216
|
trustPolicyExclude:
|
|
217
|
-
- 'effect@4.0.0-
|
|
218
|
-
- '@effect/opentelemetry@4.0.0-
|
|
217
|
+
- 'effect@4.0.0-rc.112'
|
|
218
|
+
- '@effect/opentelemetry@4.0.0-rc.112'
|
|
219
219
|
|
|
220
220
|
overrides:
|
|
221
|
-
'@effect/opentelemetry': 4.0.0-
|
|
222
|
-
'@effect/vitest': 4.0.0-
|
|
223
|
-
effect: 4.0.0-
|
|
221
|
+
'@effect/opentelemetry': 4.0.0-rc.112
|
|
222
|
+
'@effect/vitest': 4.0.0-rc.112
|
|
223
|
+
effect: 4.0.0-rc.112
|
|
224
224
|
```
|
|
225
225
|
|
|
226
|
-
不要在应用包里添加不同版本的直接 `effect` 依赖。Effect
|
|
226
|
+
不要在应用包里添加不同版本的直接 `effect` 依赖。Effect 预发布版本不一致时,Layer 或 HTTP
|
|
227
227
|
middleware 构建可能因为运行时 service 来自不同包实例而失败。严格的 24 小时发布年龄
|
|
228
228
|
门禁适用于实际安装的包;当前版本组没有 Effect 年龄豁免,且仅用于 override 的
|
|
229
229
|
`@effect/vitest` 不是已安装的审批目标。
|
|
@@ -128,8 +128,8 @@ pnpm overrides/trust policy 和 pnpm lockfile。剩余失败就是源码迁移
|
|
|
128
128
|
`api/lambda`、`shared/effect` 和 `src/effect`。
|
|
129
129
|
|
|
130
130
|
严格 Effect 生成 workspace 会通过 pnpm overrides 固定兼容版本组:
|
|
131
|
-
`effect@4.0.0-
|
|
132
|
-
`@effect/vitest@4.0.0-
|
|
131
|
+
`effect@4.0.0-rc.112`、`@effect/opentelemetry@4.0.0-rc.112` 和
|
|
132
|
+
`@effect/vitest@4.0.0-rc.112`。不要添加与这些 overrides 冲突的 app 本地直接
|
|
133
133
|
Effect 版本。严格的 24 小时发布年龄门禁适用于实际安装的包;当前版本组不包含 Effect
|
|
134
134
|
年龄豁免,仅用于 override 的 `@effect/vitest` 也不是已安装的审批目标。
|
|
135
135
|
`trustPolicyExclude` 是独立策略,仅为 `effect` 和
|
|
@@ -140,12 +140,21 @@ provenance attestation 的迁移;它不属于 release-age 审批。
|
|
|
140
140
|
|
|
141
141
|
| 范围 | 固定版本 |
|
|
142
142
|
| --- | --- |
|
|
143
|
-
| Effect runtime 与测试版本组 | `effect`、`@effect/opentelemetry`、`@effect/vitest`:`4.0.0-
|
|
144
|
-
| Effect compiler | `@effect/tsgo@0.
|
|
145
|
-
|
|
|
146
|
-
|
|
|
147
|
-
|
|
|
148
|
-
|
|
|
143
|
+
| Effect runtime 与测试版本组 | `effect`、`@effect/opentelemetry`、`@effect/vitest`:`4.0.0-rc.112` |
|
|
144
|
+
| Effect compiler | `@effect/tsgo@0.37.0` |
|
|
145
|
+
| Oxc 与 Ultracite | `oxlint@1.80.0`、`oxfmt@0.65.0`、`ultracite@7.10.6` |
|
|
146
|
+
| TanStack Router | `@tanstack/react-router@1.170.32`、`@tanstack/router-core@1.171.27`、`@tanstack/history@1.162.1` |
|
|
147
|
+
| Module Federation | `bridge-react`、`manifest`、`modern-js-v3`、`rspack`:`2.9.0`;`@module-federation/node@2.7.50` |
|
|
148
|
+
| Tailwind CSS | `tailwindcss@4.3.3` |
|
|
149
|
+
| Node 与包管理工具 | Node `26.7.0`、`@types/node@^26.2.0`、pnpm `11.24.0` |
|
|
150
|
+
|
|
151
|
+
生成的 workspace 默认使用 `@module-federation/bridge-react` 的
|
|
152
|
+
router-free base entry(`bridge.enableBridgeRouter: false`),应用路由由
|
|
153
|
+
TanStack Router 承担;某个 app 的 package.json 直接依赖中声明了
|
|
154
|
+
`react-router`(或 `react-router-dom`),该 app 就会被标记为 React Router
|
|
155
|
+
consumer:generator/migration 会为该 app 的 federation 配置生成
|
|
156
|
+
`enableBridgeRouter: true`,workspace validator 也会接受这个值,UltraModern
|
|
157
|
+
preset 会为该 app 自身的路由 alias `react-router` 的入口。
|
|
149
158
|
|
|
150
159
|
渐进迁移意味着尚未迁移的旧 Modern.js app 可以保留现有 runtime,直到被转换为
|
|
151
160
|
UltraModern。一个 surface 一旦生成为或迁移为 UltraModern HTTP API,就只能使用
|
|
@@ -212,6 +221,87 @@ migration 时不要再用 app 本地 postprocess。Cloudflare public output 默
|
|
|
212
221
|
会按 app、构建目标和 Rspack environment 隔离,避免本地 `build`、`cloudflare:build`
|
|
213
222
|
以及多 environment compiler 共享可变构建状态。
|
|
214
223
|
|
|
224
|
+
## 配置公开预设
|
|
225
|
+
|
|
226
|
+
在标准 Modern.js `defineConfig` 调用中使用
|
|
227
|
+
`presetUltramodern(appConfig, presetOptions)`:
|
|
228
|
+
|
|
229
|
+
```ts title="modern.config.ts"
|
|
230
|
+
import { defineConfig, presetUltramodern } from '@modern-js/app-tools';
|
|
231
|
+
|
|
232
|
+
export default defineConfig(
|
|
233
|
+
presetUltramodern(
|
|
234
|
+
{
|
|
235
|
+
output: {
|
|
236
|
+
precompress: false,
|
|
237
|
+
},
|
|
238
|
+
server: {
|
|
239
|
+
telemetry: {
|
|
240
|
+
failLoudStartup: true,
|
|
241
|
+
},
|
|
242
|
+
},
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
appId: 'catalog',
|
|
246
|
+
enableModuleFederationSSR: false,
|
|
247
|
+
enableTelemetryExporters: false,
|
|
248
|
+
},
|
|
249
|
+
),
|
|
250
|
+
);
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
第一个参数是普通的 `AppUserConfig`,用于应用自己拥有的配置,并在提供覆盖值时胜出。
|
|
254
|
+
第二个参数控制预设本身。关闭预设能力时,使用它提供的类型化选项,例如
|
|
255
|
+
`enableBffRequestId: false`、`enableTelemetry: false`、
|
|
256
|
+
`enableTelemetryExporters: false` 和 `enableModuleFederationSSR: false`。
|
|
257
|
+
|
|
258
|
+
组合过程遵循 Modern.js 配置合并规则:
|
|
259
|
+
|
|
260
|
+
- 嵌套对象会递归合并。修改一个嵌套字段时,预设中的同级字段会保留。
|
|
261
|
+
- 应用提供的标量和 `false` 会覆盖预设值。省略字段或将其保留为 `undefined` 时,
|
|
262
|
+
预设值会保留。
|
|
263
|
+
- 数组和配置 hook 按预设优先的顺序组合。非函数数组项按深度相等去重,函数项则全部
|
|
264
|
+
保留。空数组或空对象不会清除预设已经提供的值。
|
|
265
|
+
|
|
266
|
+
这里没有通用的 reset sentinel。预设拥有的行为应使用类型化预设选项控制,应用拥有的
|
|
267
|
+
行为应使用普通应用配置覆盖。
|
|
268
|
+
|
|
269
|
+
`createPresetUltramodernConfig(options)` 是用于检查或生成一份全新预设配置的高级 API。
|
|
270
|
+
不要把它的结果展开进另一个配置对象。对象展开是浅层操作,替换 `server`、`output`
|
|
271
|
+
或其他嵌套对象时,会无提示地丢弃预设中的同级字段。编写 `modern.config.ts` 时应使用
|
|
272
|
+
`presetUltramodern(...)`。
|
|
273
|
+
|
|
274
|
+
### 裸预设与生成 workspace 的策略
|
|
275
|
+
|
|
276
|
+
预设和 workspace 生成器分别负责不同的配置:
|
|
277
|
+
|
|
278
|
+
| 来源 | 身份配置 | 其他配置 |
|
|
279
|
+
| --- | --- | --- |
|
|
280
|
+
| 裸 `createPresetUltramodernConfig()` 的结果 | 使用 `appId: 'app'`,不设置 `deliveryUnit` | 使用预设默认值。Telemetry 保持启用,但只有设置具体端点后才会配置对应导出器。 |
|
|
281
|
+
| 生成的应用 | 提供应用专属的 `appId` 和生成时写入的 `deliveryUnit` | 其他严格默认值继承自 `presetUltramodern(...)`。 |
|
|
282
|
+
| 应用 | 通过第一个 `appConfig` 参数提供配置 | 按 Modern.js 的正常合并规则覆盖应用拥有的字段。 |
|
|
283
|
+
|
|
284
|
+
应保留生成的 `appId` 和 `deliveryUnit` 选项。修改预设拥有的行为时,使用类型化选项,
|
|
285
|
+
例如
|
|
286
|
+
`enableTelemetryExporters: false`、`enableTelemetry: false`、
|
|
287
|
+
`enableBffRequestId: false` 或 `enableModuleFederationSSR: false`。修改应用拥有的
|
|
288
|
+
字段时,应像上面的示例一样,把覆盖值放在第一个参数中。
|
|
289
|
+
|
|
290
|
+
Telemetry 导出端点默认不设置:
|
|
291
|
+
|
|
292
|
+
- `MODERN_TELEMETRY_OTLP_ENDPOINT` 只启用 OTLP 导出器。
|
|
293
|
+
- `MODERN_TELEMETRY_VICTORIA_ENDPOINT` 只启用 VictoriaMetrics 导出器。
|
|
294
|
+
- 同时设置两个变量会启用两个导出器。两个变量都未设置时,telemetry 管线保持启用,
|
|
295
|
+
但不会配置导出器。
|
|
296
|
+
|
|
297
|
+
类型化的 `otlpEndpoint` 和 `victoriaMetricsEndpoint` 预设选项也能提供同样的
|
|
298
|
+
逐导出器行为,无需使用环境变量。
|
|
299
|
+
|
|
300
|
+
```bash
|
|
301
|
+
MODERN_TELEMETRY_OTLP_ENDPOINT=https://otel.example.com/v1/logs \
|
|
302
|
+
mise exec -- pnpm dev
|
|
303
|
+
```
|
|
304
|
+
|
|
215
305
|
## 人类工作流
|
|
216
306
|
|
|
217
307
|
公开的 BleedingDev create 包只有一个受支持的生成产品。默认命令会创建一个
|
|
@@ -377,18 +467,6 @@ Live Cloudflare 与 Zephyr 证明需要公开 Worker URL 和 Zephyr 凭据。没
|
|
|
377
467
|
BleedingDev 包通过 GitHub Actions trusted publishing 发布。公开发布 workflow 不使用
|
|
378
468
|
长期 npm token;不要从开发机器手动发布包。
|
|
379
469
|
|
|
380
|
-
## 基线开关(可按需关闭)
|
|
381
|
-
|
|
382
|
-
生成的 `presetUltramodern(...)` 脚手架会开启更严格的平台契约。以下环境变量会在生成的 `modern.config.ts` 中读取,可按应用或按环境关闭/覆盖:
|
|
383
|
-
|
|
384
|
-
- `MODERN_BASELINE_ENABLE_MF_SSR`(默认:`true`):开启应用级 MF SSR 基线契约(`server.ssr.mode: 'stream'` + `moduleFederationAppSSR`)。应用不使用 app-level MF SSR 或希望先走普通 SSR/CSR 路径时可关闭。
|
|
385
|
-
- `MODERN_BASELINE_ENABLE_BFF_REQUEST_ID`(默认:`true`):开启默认 BFF producer 身份契约(`bff.requestId`)。应用不需要跨项目 producer 隔离时可关闭。
|
|
386
|
-
- `MODERN_BASELINE_ENABLE_TELEMETRY_EXPORTERS`(默认:`true`):在基线配置中启用 telemetry 导出器。当前环境还没有 telemetry 后端时可关闭。
|
|
387
|
-
- `MODERN_BASELINE_APP_ID`(默认:`basename(process.cwd())`):覆盖基线 `bff.requestId` 身份。需要固定、可治理的统一 producer ID 命名时建议设置。
|
|
388
|
-
- `MODERN_TELEMETRY_OTLP_ENDPOINT`(默认:`http://127.0.0.1:4318/v1/logs`):OTLP 导出端点。接入其他 OTLP collector 地址时覆盖。
|
|
389
|
-
- `MODERN_TELEMETRY_VICTORIA_ENDPOINT`(默认:`http://127.0.0.1:8428/api/v1/import/prometheus`):VictoriaMetrics 导出端点。接入其他 VM 写入地址时覆盖。
|
|
390
|
-
- `MODERN_TELEMETRY_FAIL_LOUD_STARTUP`(默认:`true`):导出器健康检查失败时启动即失败(fail-loud)。本地/开发环境希望 telemetry 故障不阻断启动时可关闭。
|
|
391
|
-
|
|
392
470
|
## 相关文档
|
|
393
471
|
|
|
394
472
|
- [BFF 运行时框架](/guides/advanced-features/bff/frameworks)
|
package/package.json
CHANGED
|
@@ -19,12 +19,12 @@
|
|
|
19
19
|
"modern.js",
|
|
20
20
|
"ultramodern.js"
|
|
21
21
|
],
|
|
22
|
-
"version": "3.8.
|
|
22
|
+
"version": "3.8.3-ultramodern.1",
|
|
23
23
|
"publishConfig": {
|
|
24
24
|
"access": "public"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@modern-js/sandpack-react": "npm:@bleedingdev/modern-js-sandpack-react@3.8.
|
|
27
|
+
"@modern-js/sandpack-react": "npm:@bleedingdev/modern-js-sandpack-react@3.8.3-ultramodern.1",
|
|
28
28
|
"mermaid": "^11.16.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|