@modern-js/main-doc 2.26.0 → 2.27.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.
@@ -5,15 +5,19 @@ sidebar_position: 8
5
5
 
6
6
  # Hook 列表
7
7
 
8
- Modern.js 中暴露了三类插件:CLI、Runtime、Server。下面列举下各类中的 Hook:
8
+ Modern.js 工程体系中包含三类插件:CLI、Runtime、Server,每一类插件可以使用不同的 Hooks。
9
9
 
10
- ## CLI
10
+ 在本章节中,罗列了所有可用的 Hooks,你可以根据自己的需求来使用对应的 Hook。
11
+
12
+ ## CLI Common Hooks
13
+
14
+ 以下是通用的 CLI Hooks,可以在 Modern.js Framework 以及 Modern.js Module 中使用。
11
15
 
12
16
  ### `beforeConfig`
13
17
 
14
18
  - 功能:运行收集配置前的任务
15
19
  - 执行阶段:收集配置前
16
- - Hook 模型:AsyncWorkflow
20
+ - Hook 模型:`AsyncWorkflow`
17
21
  - 类型:`AsyncWorkflow<void, void>`
18
22
  - 使用示例:
19
23
 
@@ -35,7 +39,7 @@ export const myPlugin = (): CliPlugin => ({
35
39
 
36
40
  - 功能:收集配置
37
41
  - 执行阶段:解析完 `modern.config.ts` 中的配置之后
38
- - Hook 模型:ParallelWorkflow
42
+ - Hook 模型:`ParallelWorkflow`
39
43
  - 类型:`ParallelWorkflow<void, unknown>`
40
44
  - 使用示例:
41
45
 
@@ -55,13 +59,37 @@ export const myPlugin = (): CliPlugin => ({
55
59
  });
56
60
  ```
57
61
 
58
- 这里返回的配置信息,会被收集和统一处理合并。
62
+ 如果你需要设置 Modern.js Framework 的配置,请使用 `@modern-js/app-tools` 导出的 `CliPlugin<AppTools>` 类型:
63
+
64
+ ```ts
65
+ import type { CliPlugin, AppTools } from '@modern-js/app-tools';
66
+
67
+ export const myPlugin = (): CliPlugin => ({
68
+ setup(api) {
69
+ return {
70
+ config: () => {
71
+ return {
72
+ output: {
73
+ polyfill: 'usage',
74
+ },
75
+ };
76
+ },
77
+ };
78
+ },
79
+ });
80
+ ```
81
+
82
+ 插件在 `config` hook 中返回的配置信息,会被 Modern.js 统一收集与合并,最终生成一份 `NormalizedConfig`。在进行配置合并时,优先级由高到低依次为:
83
+
84
+ 1. 用户在 `modern.config.*` 文件里定义的配置
85
+ 2. 插件通过 `config` hook 定义的配置
86
+ 3. Modern.js 默认配置。
59
87
 
60
88
  ### `validateSchema`
61
89
 
62
90
  - 功能:收集各个插件中配置的用来校验用户配置的 [JSON Schema](https://json-schema.org/)
63
- - 执行阶段:`config` Hook 运行完之后。
64
- - Hook 模型:ParallelWorkflow
91
+ - 执行阶段:`config` Hook 运行完成之后。
92
+ - Hook 模型:`ParallelWorkflow`
65
93
  - 类型:`ParallelWorkflow<void, unknown>`
66
94
  - 使用示例:
67
95
 
@@ -116,7 +144,7 @@ export const myPlugin = defineConfig({
116
144
 
117
145
  就会报错:
118
146
 
119
- ```sh
147
+ ```
120
148
  $ modern dev
121
149
  1 | {
122
150
  > 2 | "foo": {},
@@ -127,7 +155,7 @@ $ modern dev
127
155
 
128
156
  - 功能:运行主流程的前置准备流程
129
157
  - 执行阶段:校验完配置之后
130
- - Hook 模型:AsyncWorkflow
158
+ - Hook 模型:`AsyncWorkflow`
131
159
  - 类型:`AsyncWorkflow<void, void>`
132
160
  - 使用示例:
133
161
 
@@ -149,7 +177,7 @@ export const myPlugin = (): CliPlugin => ({
149
177
 
150
178
  - 功能:运行前置准备流程的之后的任务
151
179
  - 执行阶段:前置准备流程之后
152
- - Hook 模型:AsyncWorkflow
180
+ - Hook 模型:`AsyncWorkflow`
153
181
  - 类型:`AsyncWorkflow<void, void>`
154
182
  - 使用示例:
155
183
 
@@ -169,9 +197,9 @@ export const myPlugin = (): CliPlugin => ({
169
197
 
170
198
  ### `commands`
171
199
 
172
- - 功能:为 command 添加新的命令
173
- - 执行阶段:`prepare` Hook 运行完之后
174
- - Hook 模型:AsyncWorkflow
200
+ - 功能:为 commander 添加新的 CLI 命令
201
+ - 执行阶段:`prepare` Hook 运行完成之后
202
+ - Hook 模型:`AsyncWorkflow`
175
203
  - 类型:`AsyncWorkflow<{ program: Command; }, void>`
176
204
  - 使用示例:
177
205
 
@@ -213,7 +241,7 @@ foo
213
241
 
214
242
  - 功能:在退出进程前,重置一些文件状态
215
243
  - 执行阶段:进程退出之前
216
- - Hook 模型:Workflow
244
+ - Hook 模型:`Workflow`
217
245
  - 类型:`Workflow<void, void>`
218
246
  - 使用示例:
219
247
 
@@ -235,18 +263,24 @@ export const myPlugin = (): CliPlugin => ({
235
263
  由于 Node.js 中退出进程时的回调函数是同步的,所以 `beforeExit` Hook 的类型是 `Workflow`,不能执行异步操作。
236
264
  :::
237
265
 
266
+ ## CLI Framework Hooks
267
+
268
+ 以下是框架的 CLI Hooks,只能在 Modern.js Framework 中使用,不能在 Modern.js Module 中使用。
269
+
270
+ 你需要从 `@modern-js/app-tools` 中导入 `CliPlugin` 和 `AppTools` 类型,以获得准确的 Hooks 类型提示。
271
+
238
272
  ### `beforeDev`
239
273
 
240
274
  - 功能:运行 dev 主流程的之前的任务
241
275
  - 执行阶段:`dev` 命令运行时,项目开始启动前执行
242
- - Hook 模型:AsyncWorkflow
276
+ - Hook 模型:`AsyncWorkflow`
243
277
  - 类型:`AsyncWorkflow<void, unknown>`
244
278
  - 使用示例:
245
279
 
246
280
  ```ts
247
- import type { CliPlugin } from '@modern-js/core';
281
+ import type { CliPlugin, AppTools } from '@modern-js/app-tools';
248
282
 
249
- export const myPlugin = (): CliPlugin => ({
283
+ export const myPlugin = (): CliPlugin<AppTools> => ({
250
284
  setup(api) {
251
285
  return {
252
286
  beforeDev: () => {
@@ -261,14 +295,14 @@ export const myPlugin = (): CliPlugin => ({
261
295
 
262
296
  - 功能:运行 dev 主流程的之后的任务
263
297
  - 执行阶段:运行 `dev` 命令时,每一次编译完成后执行
264
- - Hook 模型:AsyncWorkflow
298
+ - Hook 模型:`AsyncWorkflow`
265
299
  - 类型:`AsyncWorkflow<{ isFirstCompile: boolean }, unknown>`
266
300
  - 使用示例:
267
301
 
268
302
  ```ts
269
- import type { CliPlugin } from '@modern-js/core';
303
+ import type { CliPlugin, AppTools } from '@modern-js/app-tools';
270
304
 
271
- export const myPlugin = (): CliPlugin => ({
305
+ export const myPlugin = (): CliPlugin<AppTools> => ({
272
306
  setup(api) {
273
307
  return {
274
308
  afterDev: () => {
@@ -282,9 +316,9 @@ export const myPlugin = (): CliPlugin => ({
282
316
  `afterDev` 会在每一次编译完成后执行,你可以通过 `isFirstCompile` 参数来判断是否为首次编译:
283
317
 
284
318
  ```ts
285
- import type { CliPlugin } from '@modern-js/core';
319
+ import type { CliPlugin, AppTools } from '@modern-js/app-tools';
286
320
 
287
- export const myPlugin = (): CliPlugin => ({
321
+ export const myPlugin = (): CliPlugin<AppTools> => ({
288
322
  setup(api) {
289
323
  return {
290
324
  afterDev: ({ isFirstCompile }) => {
@@ -297,33 +331,32 @@ export const myPlugin = (): CliPlugin => ({
297
331
  });
298
332
  ```
299
333
 
300
- ### `beforeCreateCompiler`
334
+ ### `beforeBuild`
301
335
 
302
- - 功能:在创建底层 Compiler 实例前触发的回调函数,并且你可以通过 `bundlerConfigs` 参数获取到底层打包工具的最终配置数组:
336
+ - 功能:在执行生产环境构建前触发的回调函数,你可以通过 `bundlerConfigs` 参数获取到底层打包工具的最终配置数组。
303
337
  - 如果当前打包工具为 webpack,则获取到的是 webpack 配置数组。
304
338
  - 如果当前打包工具为 Rspack,则获取到的是 Rspack 配置数组。
305
339
  - 配置数组中可能包含一份或多份配置,这取决于你是否开启了 SSR 等功能。
306
- - 执行阶段:在执行 dev 或 build 命令时,创建 Compiler 实例之前执行
340
+ - 执行阶段:运行 `build` 命令后,在开始构建前执行
307
341
  - Hook 模型:`AsyncWorkflow`
308
342
  - 类型:
309
343
 
310
344
  ```ts
311
- type BeforeCreateCompiler = AsyncWorkflow<
312
- { bundlerConfigs: Configuration[] },
313
- unknown
314
- >;
345
+ type BeforeBuild = AsyncWorkflow<{
346
+ bundlerConfigs: WebpackConfig[] | RspackConfig[];
347
+ }>;
315
348
  ```
316
349
 
317
350
  - 使用示例:
318
351
 
319
352
  ```ts
320
- import type { CliPlugin } from '@modern-js/core';
353
+ import type { CliPlugin, AppTools } from '@modern-js/app-tools';
321
354
 
322
- export const myPlugin = (): CliPlugin => ({
355
+ export const myPlugin = (): CliPlugin<AppTools> => ({
323
356
  setup(api) {
324
357
  return {
325
- beforeCreateCompiler: ({ bundlerConfigs }) => {
326
- console.log('Before create compiler.');
358
+ beforeBuild: ({ bundlerConfigs }) => {
359
+ console.log('Before build.');
327
360
  console.log(bundlerConfigs);
328
361
  },
329
362
  };
@@ -331,123 +364,124 @@ export const myPlugin = (): CliPlugin => ({
331
364
  });
332
365
  ```
333
366
 
334
- ### `afterCreateCompiler`
367
+ ### `afterBuild`
335
368
 
336
- - 功能:在创建 Compiler 实例后、执行构建前触发的回调函数,并且你可以通过 `compiler` 参数获取到 Compiler 实例对象:
337
- - 如果当前打包工具为 webpack,则获取到的是 webpack Compiler 对象。
338
- - 如果当前打包工具为 Rspack,则获取到的是 Rspack Compiler 对象。
339
- - 执行阶段:创建 Compiler 对象之后执行
369
+ - 功能:在执行生产环境构建后触发的回调函数,你可以通过 `stats` 参数获取到构建结果信息。
370
+ - 如果当前打包工具为 webpack,则获取到的是 webpack Stats。
371
+ - 如果当前打包工具为 Rspack,则获取到的是 Rspack Stats。
372
+ - 执行阶段:运行 `build` 命令运行后,在项目构建完成之后执行
340
373
  - Hook 模型:`AsyncWorkflow`
341
374
  - 类型:
342
375
 
343
376
  ```ts
344
- type AfterCreateCompiler = AsyncWorkflow<
345
- { compiler: Compiler | MultiCompiler | undefined },
346
- unknown
347
- >;
377
+ type AfterBuild = AsyncWorkflow<{
378
+ stats?: Stats | MultiStats;
379
+ }>;
348
380
  ```
349
381
 
350
382
  - 使用示例:
351
383
 
352
384
  ```ts
353
- import type { CliPlugin } from '@modern-js/core';
385
+ import type { CliPlugin, AppTools } from '@modern-js/app-tools';
354
386
 
355
- export const myPlugin = (): CliPlugin => ({
387
+ export const myPlugin = (): CliPlugin<AppTools> => ({
356
388
  setup(api) {
357
389
  return {
358
- afterCreateCompiler: ({ compiler }) => {
359
- console.log('After create compiler.');
360
- console.log(compiler);
390
+ afterBuild: ({ stats }) => {
391
+ console.log('After build.');
392
+ console.log(stats);
361
393
  },
362
394
  };
363
395
  },
364
396
  });
365
397
  ```
366
398
 
367
- ### `beforePrintInstructions`
399
+ ### `beforeCreateCompiler`
400
+
401
+ - 功能:在创建底层 Compiler 实例前触发的回调函数,并且你可以通过 `bundlerConfigs` 参数获取到底层打包工具的最终配置数组:
402
+ - 如果当前打包工具为 webpack,则获取到的是 webpack 配置数组。
403
+ - 如果当前打包工具为 Rspack,则获取到的是 Rspack 配置数组。
404
+ - 配置数组中可能包含一份或多份配置,这取决于你是否开启了 SSR 等功能。
405
+ - 执行阶段:在执行 dev 或 build 命令时,创建 Compiler 实例之前执行
406
+ - Hook 模型:`AsyncWorkflow`
407
+ - 类型:
408
+
409
+ ```ts
410
+ type BeforeCreateCompiler = AsyncWorkflow<
411
+ { bundlerConfigs: Configuration[] },
412
+ unknown
413
+ >;
414
+ ```
368
415
 
369
- - 功能:在中间件函数中可以拿到即将打印的日志信息,并对其进行修改
370
- - 执行阶段:打印日志信息之前执行
371
- - Hook 模型:AsyncWaterfall
372
- - 类型:`AsyncWaterfall<{ instructions: string }>`
373
416
  - 使用示例:
374
417
 
375
418
  ```ts
376
- import type { CliPlugin } from '@modern-js/core';
419
+ import type { CliPlugin, AppTools } from '@modern-js/app-tools';
377
420
 
378
- export const myPlugin = (): CliPlugin => ({
421
+ export const myPlugin = (): CliPlugin<AppTools> => ({
379
422
  setup(api) {
380
423
  return {
381
- beforePrintInstructions: ({ instructions }) => {
382
- // do something
383
- return {
384
- instructions: [...instructions, 'some new message'],
385
- };
424
+ beforeCreateCompiler: ({ bundlerConfigs }) => {
425
+ console.log('Before create compiler.');
426
+ console.log(bundlerConfigs);
386
427
  },
387
428
  };
388
429
  },
389
430
  });
390
431
  ```
391
432
 
392
- ### `beforeBuild`
433
+ ### `afterCreateCompiler`
393
434
 
394
- - 功能:在执行生产环境构建前触发的回调函数,你可以通过 `bundlerConfigs` 参数获取到底层打包工具的最终配置数组。
395
- - 如果当前打包工具为 webpack,则获取到的是 webpack 配置数组。
396
- - 如果当前打包工具为 Rspack,则获取到的是 Rspack 配置数组。
397
- - 配置数组中可能包含一份或多份配置,这取决于你是否开启了 SSR 等功能。
398
- - 执行阶段:运行 `build` 命令后,在开始构建前执行
435
+ - 功能:在创建 Compiler 实例后、执行构建前触发的回调函数,并且你可以通过 `compiler` 参数获取到 Compiler 实例对象:
436
+ - 如果当前打包工具为 webpack,则获取到的是 webpack Compiler 对象。
437
+ - 如果当前打包工具为 Rspack,则获取到的是 Rspack Compiler 对象。
438
+ - 执行阶段:创建 Compiler 对象之后执行
399
439
  - Hook 模型:`AsyncWorkflow`
400
440
  - 类型:
401
441
 
402
442
  ```ts
403
- type BeforeBuild = AsyncWorkflow<{
404
- bundlerConfigs: WebpackConfig[] | RspackConfig[];
405
- }>;
443
+ type AfterCreateCompiler = AsyncWorkflow<
444
+ { compiler: Compiler | MultiCompiler | undefined },
445
+ unknown
446
+ >;
406
447
  ```
407
448
 
408
449
  - 使用示例:
409
450
 
410
451
  ```ts
411
- import type { CliPlugin } from '@modern-js/core';
452
+ import type { CliPlugin, AppTools } from '@modern-js/app-tools';
412
453
 
413
- export const myPlugin = (): CliPlugin => ({
454
+ export const myPlugin = (): CliPlugin<AppTools> => ({
414
455
  setup(api) {
415
456
  return {
416
- beforeBuild: ({ bundlerConfigs }) => {
417
- console.log('Before build.');
418
- console.log(bundlerConfigs);
457
+ afterCreateCompiler: ({ compiler }) => {
458
+ console.log('After create compiler.');
459
+ console.log(compiler);
419
460
  },
420
461
  };
421
462
  },
422
463
  });
423
464
  ```
424
465
 
425
- ### `afterBuild`
426
-
427
- - 功能:在执行生产环境构建后触发的回调函数,你可以通过 `stats` 参数获取到构建结果信息。
428
- - 如果当前打包工具为 webpack,则获取到的是 webpack Stats。
429
- - 如果当前打包工具为 Rspack,则获取到的是 Rspack Stats。
430
- - 执行阶段:运行 `build` 命令运行后,在项目构建完成之后执行
431
- - Hook 模型:`AsyncWorkflow`
432
- - 类型:
433
-
434
- ```ts
435
- type AfterBuild = AsyncWorkflow<{
436
- stats?: Stats | MultiStats;
437
- }>;
438
- ```
466
+ ### `beforePrintInstructions`
439
467
 
468
+ - 功能:在中间件函数中可以拿到即将打印的日志信息,并对其进行修改
469
+ - 执行阶段:打印日志信息之前执行
470
+ - Hook 模型:`AsyncWaterfall`
471
+ - 类型:`AsyncWaterfall<{ instructions: string }>`
440
472
  - 使用示例:
441
473
 
442
474
  ```ts
443
- import type { CliPlugin } from '@modern-js/core';
475
+ import type { CliPlugin, AppTools } from '@modern-js/app-tools';
444
476
 
445
- export const myPlugin = (): CliPlugin => ({
477
+ export const myPlugin = (): CliPlugin<AppTools> => ({
446
478
  setup(api) {
447
479
  return {
448
- afterBuild: ({ stats }) => {
449
- console.log('After build.');
450
- console.log(stats);
480
+ beforePrintInstructions: ({ instructions }) => {
481
+ // do something
482
+ return {
483
+ instructions: [...instructions, 'some new message'],
484
+ };
451
485
  },
452
486
  };
453
487
  },
@@ -458,14 +492,14 @@ export const myPlugin = (): CliPlugin => ({
458
492
 
459
493
  - 功能:用于修改、添加生成入口文件中的 `import` 语句
460
494
  - 执行阶段:生成入口文件之前,[`prepare`](#prepare) 阶段触发
461
- - Hook 模型:AsyncWaterfall
495
+ - Hook 模型:`AsyncWaterfall`
462
496
  - 类型:`AsyncWaterfall<{ imports: ImportStatement[]; entrypoint: Entrypoint; }>`
463
497
  - 使用示例:
464
498
 
465
499
  ```ts
466
- import type { CliPlugin } from '@modern-js/core';
500
+ import type { CliPlugin, AppTools } from '@modern-js/app-tools';
467
501
 
468
- export const myPlugin = (): CliPlugin => ({
502
+ export const myPlugin = (): CliPlugin<AppTools> => ({
469
503
  setup(api) {
470
504
  return {
471
505
  modifyEntryImports({ entrypoint, imports }) {
@@ -490,14 +524,14 @@ export const myPlugin = (): CliPlugin => ({
490
524
 
491
525
  - 功能:用于修改生成入口文件中的 `export` 语句
492
526
  - 执行阶段:生成入口文件之前,[`prepare`](#prepare) 阶段触发
493
- - Hook 模型:AsyncWaterfall
527
+ - Hook 模型:`AsyncWaterfall`
494
528
  - 类型:`AsyncWaterfall<{ entrypoint: Entrypoint; exportStatement: string; }>`
495
529
  - 使用示例:
496
530
 
497
531
  ```ts
498
- import type { CliPlugin } from '@modern-js/core';
532
+ import type { CliPlugin, AppTools } from '@modern-js/app-tools';
499
533
 
500
- export const myPlugin = (): CliPlugin => ({
534
+ export const myPlugin = (): CliPlugin<AppTools> => ({
501
535
  setup(api) {
502
536
  return {
503
537
  modifyEntryExport({ entrypoint, exportStatement }) {
@@ -517,14 +551,14 @@ export const myPlugin = (): CliPlugin => ({
517
551
 
518
552
  - 功能:用于添加、修改生成入口文件中的 [Runtime 插件](#Runtime)
519
553
  - 执行阶段:生成入口文件之前,[`prepare`](#prepare) 阶段触发
520
- - Hook 模型:AsyncWaterfall
554
+ - Hook 模型:`AsyncWaterfall`
521
555
  - 类型:`AsyncWaterfall<{ entrypoint: Entrypoint; plugins: RuntimePlugin[]; }>`
522
556
  - 使用示例:
523
557
 
524
558
  ```ts
525
- import type { CliPlugin } from '@modern-js/core';
559
+ import type { CliPlugin, AppTools } from '@modern-js/app-tools';
526
560
 
527
- export const myPlugin = (): CliPlugin => ({
561
+ export const myPlugin = (): CliPlugin<AppTools> => ({
528
562
  setup(api) {
529
563
  return {
530
564
  modifyEntryRuntimePlugins({ entrypoint, plugins }) {
@@ -552,14 +586,14 @@ export const myPlugin = (): CliPlugin => ({
552
586
 
553
587
  - 功能:用于修改生成入口文件中 `render` 函数
554
588
  - 执行阶段:生成入口文件之前,[`prepare`](#prepare) 阶段触发
555
- - Hook 模型:AsyncWaterfall
589
+ - Hook 模型:`AsyncWaterfall`
556
590
  - 类型:`AsyncWaterfall<{ entrypoint: Entrypoint; code: string; }>`
557
591
  - 使用示例:
558
592
 
559
593
  ```ts
560
- import type { CliPlugin } from '@modern-js/core';
594
+ import type { CliPlugin, AppTools } from '@modern-js/app-tools';
561
595
 
562
- export const myPlugin = (): CliPlugin => ({
596
+ export const myPlugin = (): CliPlugin<AppTools> => ({
563
597
  setup(api) {
564
598
  return {
565
599
  modifyEntryRenderFunction({ entrypoint, code }) {
@@ -578,14 +612,14 @@ export const myPlugin = (): CliPlugin => ({
578
612
 
579
613
  - 功能:用于修改生成前端页面路由文件中的内容,内容都是需要可序列化的
580
614
  - 执行阶段:生成前端路由文件之前,[`prepare`](#prepare) 阶段触发
581
- - Hook 模型:AsyncWaterfall
615
+ - Hook 模型:`AsyncWaterfall`
582
616
  - 类型:`AsyncWaterfall<{ entrypoint: Entrypoint; routes: Route[]; }>`
583
617
  - 使用示例:
584
618
 
585
619
  ```tsx
586
- import type { CliPlugin } from '@modern-js/core';
620
+ import type { CliPlugin, AppTools } from '@modern-js/app-tools';
587
621
 
588
- export const myPlugin = (): CliPlugin => ({
622
+ export const myPlugin = (): CliPlugin<AppTools> => ({
589
623
  setup(api) {
590
624
  return {
591
625
  modifyFileSystemRoutes({ entrypoint, routes }) {
@@ -612,14 +646,14 @@ export const myPlugin = (): CliPlugin => ({
612
646
 
613
647
  - 功能:用于修改生成服务器路由中的内容
614
648
  - 执行阶段:生成 Server 路由文件之前,[`prepare`](#prepare) 阶段触发
615
- - Hook 模型:AsyncWaterfall
649
+ - Hook 模型:`AsyncWaterfall`
616
650
  - 类型:`AsyncWaterfall<{ routes: ServerRoute[]; }>`
617
651
  - 使用示例:
618
652
 
619
653
  ```ts
620
- import type { CliPlugin } from '@modern-js/core';
654
+ import type { CliPlugin, AppTools } from '@modern-js/app-tools';
621
655
 
622
- export const myPlugin = (): CliPlugin => ({
656
+ export const myPlugin = (): CliPlugin<AppTools> => ({
623
657
  setup(api) {
624
658
  return {
625
659
  modifyServerRoutes({ routes }) {
@@ -645,14 +679,14 @@ export const myPlugin = (): CliPlugin => ({
645
679
 
646
680
  - 功能:用于修改包裹入口文件的异步模块,参见 [source.enableAsyncEntry](/configure/app/source/enable-async-entry)
647
681
  - 执行阶段:生成入口文件之前,[`prepare`](#prepare) 阶段触发
648
- - Hook 模型:AsyncWaterfall
682
+ - Hook 模型:`AsyncWaterfall`
649
683
  - 类型:`AsyncWaterfall<{ entrypoint: Entrypoint; code: string; }>`
650
684
  - 使用示例:
651
685
 
652
686
  ```ts
653
- import type { CliPlugin } from '@modern-js/core';
687
+ import type { CliPlugin, AppTools } from '@modern-js/app-tools';
654
688
 
655
- export const myPlugin = (): CliPlugin => ({
689
+ export const myPlugin = (): CliPlugin<AppTools> => ({
656
690
  setup(api) {
657
691
  return {
658
692
  modifyAsyncEntry({ entrypoint, code }) {
@@ -671,14 +705,14 @@ export const myPlugin = (): CliPlugin => ({
671
705
 
672
706
  - 功能:用于定制生成的 HTML 页面模版
673
707
  - 执行阶段:[`prepare`](#prepare) 阶段触发
674
- - Hook 模型:AsyncWaterfall
708
+ - Hook 模型:`AsyncWaterfall`
675
709
  - 类型:`AsyncWaterfall<{ entrypoint: Entrypoint; partials: HtmlPartials; }>`
676
710
  - 使用示例:
677
711
 
678
712
  ```ts
679
- import type { CliPlugin } from '@modern-js/core';
713
+ import type { CliPlugin, AppTools } from '@modern-js/app-tools';
680
714
 
681
- export const myPlugin = (): CliPlugin => ({
715
+ export const myPlugin = (): CliPlugin<AppTools> => ({
682
716
  setup(api) {
683
717
  return {
684
718
  async htmlPartials({ entrypoint, partials }) {
@@ -708,7 +742,7 @@ export const myPlugin = (): CliPlugin => ({
708
742
 
709
743
  - 功能:在中间件函数中会拿到 Server 初始化用到的指标测量工具配置 `measureOptions` 和日志工具配置 `loggerOptions`,并返回自定义的指标测量工具 `measure` 和日志工具配置 `logger`
710
744
  - 执行阶段:Server 初始化
711
- - Hook 模型:AsyncPipeline
745
+ - Hook 模型:`AsyncPipeline`
712
746
  - 类型:`AsyncPipeline<ServerInitInput, InitExtension>`
713
747
  - 使用示例:
714
748
 
@@ -730,7 +764,7 @@ export const myPlugin = (): ServerPlugin => ({
730
764
 
731
765
  - 功能:设置 Web 路由的处理函数,在中间件函数中可以拿到 Web Server 的前置中间件
732
766
  - 执行阶段:在请求到达的时候
733
- - Hook 模型:AsyncPipeline
767
+ - Hook 模型:`AsyncPipeline`
734
768
  - 类型:`AsyncPipeline<WebServerStartInput, Adapter>`
735
769
  - 使用示例:
736
770
 
@@ -756,7 +790,7 @@ export const myPlugin = (): ServerPlugin => ({
756
790
 
757
791
  - 功能:设置 API 路由的处理函数,在中间件函数中可以拿到 API Server 的前置中间件
758
792
  - 执行阶段:请求到达并且 match bff basename 之后执行
759
- - Hook 模型:AsyncPipeline
793
+ - Hook 模型:`AsyncPipeline`
760
794
  - 类型:`AsyncPipeline<APIServerStartInput, Adapter>`
761
795
  - 使用示例:
762
796
 
@@ -791,7 +825,7 @@ Runtime 插件主要用于开发者修改需要渲染的组件。
791
825
 
792
826
  - 功能:执行 `App.init`
793
827
  - 执行阶段:渲染(SSR/CSR)
794
- - Hook 模型:AsyncPipeline
828
+ - Hook 模型:`AsyncPipeline`
795
829
  - 类型:`AsyncPipeline<{ context: RuntimeContext; }, unknown>`
796
830
  - 使用示例:
797
831
 
@@ -814,7 +848,7 @@ export const myPlugin = (): Plugin => ({
814
848
 
815
849
  - 功能:修改需要渲染的组件
816
850
  - 执行阶段:渲染(SSR/CSR)
817
- - Hook 模型:Pipeline
851
+ - Hook 模型:`Pipeline`
818
852
  - 类型:`Pipeline<{ App: React.ComponentType<any>; }, React.ComponentType<any>>`
819
853
  - 使用示例:
820
854
 
@@ -852,7 +886,7 @@ export const myPlugin = (): Plugin => ({
852
886
 
853
887
  - 功能:修改需要渲染的 Element
854
888
  - 执行阶段:渲染(SSR/CSR)
855
- - Hook 模型:Pipeline
889
+ - Hook 模型:`Pipeline`
856
890
  - 类型:`Pipeline<{ element: JSX.Element; props: AppProps; context: RuntimeContext }, JSX.Element>`
857
891
  - 使用示例:
858
892
 
@@ -875,7 +909,7 @@ export const myPlugin = (): Plugin => ({
875
909
 
876
910
  - 功能:定制客户端渲染流程
877
911
  - 执行阶段:在浏览器客户端渲染
878
- - Hook 模型:AsyncPipeline
912
+ - Hook 模型:`AsyncPipeline`
879
913
  - 类型:`AsyncPipeline<{ App: React.ComponentType<any>; context?: RuntimeContext; rootElement: HTMLElement; }, void>`
880
914
  - 使用示例:
881
915
 
@@ -901,7 +935,7 @@ export const myPlugin = (): Plugin => ({
901
935
 
902
936
  - 功能:定制服务器端渲染流程
903
937
  - 执行阶段:SSR
904
- - Hook 模型:AsyncPipeline
938
+ - Hook 模型:`AsyncPipeline`
905
939
  - 类型:`AsyncPipeline<{ App: React.ComponentType<any>; context?: RuntimeContext; }, string>`
906
940
  - 使用示例:
907
941
 
package/package.json CHANGED
@@ -15,14 +15,14 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "2.26.0",
18
+ "version": "2.27.0",
19
19
  "publishConfig": {
20
20
  "registry": "https://registry.npmjs.org/",
21
21
  "access": "public",
22
22
  "provenance": true
23
23
  },
24
24
  "peerDependencies": {
25
- "@modern-js/builder-doc": "^2.26.0"
25
+ "@modern-js/builder-doc": "^2.27.0"
26
26
  },
27
27
  "devDependencies": {
28
28
  "classnames": "^2",
@@ -34,9 +34,9 @@
34
34
  "fs-extra": "^10",
35
35
  "@types/node": "^16",
36
36
  "@types/fs-extra": "^9",
37
- "@modern-js/builder-doc": "2.26.0",
38
- "@modern-js/doc-tools": "2.26.0",
39
- "@modern-js/doc-plugin-auto-sidebar": "2.26.0"
37
+ "@modern-js/builder-doc": "2.27.0",
38
+ "@modern-js/doc-tools": "2.27.0",
39
+ "@modern-js/doc-plugin-auto-sidebar": "2.27.0"
40
40
  },
41
41
  "scripts": {
42
42
  "dev": "modern dev",