@modern-js/main-doc 2.5.0 → 2.7.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 (87) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/en/apis/app/commands.mdx +297 -0
  3. package/en/apis/app/hooks/_category_.json +1 -1
  4. package/en/apis/app/hooks/config/upload.mdx +10 -0
  5. package/en/apis/app/hooks/src/routes.mdx +2 -2
  6. package/en/components/init-app.mdx +5 -5
  7. package/en/configure/app/bff/prefix.mdx +2 -3
  8. package/en/configure/app/bff/proxy.mdx +1 -1
  9. package/en/configure/app/dev/before-start-url.mdx +13 -0
  10. package/en/configure/app/dev/host.mdx +13 -0
  11. package/en/configure/app/output/ssg.mdx +3 -3
  12. package/en/configure/app/runtime/master-app.mdx +1 -1
  13. package/en/configure/app/server/ssr.mdx +18 -0
  14. package/en/configure/app/source/entries-dir.mdx +1 -1
  15. package/en/configure/app/testing/transformer.mdx +1 -1
  16. package/en/configure/app/tools/jest.mdx +1 -1
  17. package/en/guides/advanced-features/rspack-start.mdx +69 -0
  18. package/en/guides/advanced-features/ssg.mdx +8 -8
  19. package/en/guides/advanced-features/ssr.mdx +210 -5
  20. package/en/guides/basic-features/alias.mdx +4 -4
  21. package/en/guides/{css/tailwindcss.mdx → basic-features/css.mdx} +60 -3
  22. package/en/guides/basic-features/data-fetch.mdx +4 -4
  23. package/en/guides/basic-features/env-vars.mdx +4 -0
  24. package/en/guides/basic-features/routes.mdx +23 -7
  25. package/en/guides/concept/builder.mdx +1 -1
  26. package/en/guides/get-started/quick-start.mdx +2 -2
  27. package/en/guides/topic-detail/micro-frontend/c03-main-app.mdx +1 -1
  28. package/en/tutorials/first-app/c03-css.mdx +1 -1
  29. package/en/tutorials/first-app/c07-container.mdx +17 -17
  30. package/en/tutorials/first-app/c08-entries.mdx +23 -23
  31. package/package.json +3 -3
  32. package/scripts/summary.en.json +1 -1
  33. package/scripts/summary.zh.json +1 -1
  34. package/zh/apis/app/commands.mdx +299 -0
  35. package/zh/apis/app/hooks/_category_.json +1 -1
  36. package/zh/apis/app/hooks/config/upload.mdx +12 -2
  37. package/zh/apis/app/hooks/src/routes.mdx +2 -2
  38. package/zh/components/init-app.mdx +5 -5
  39. package/zh/configure/app/bff/prefix.mdx +1 -1
  40. package/zh/configure/app/bff/proxy.mdx +1 -1
  41. package/zh/configure/app/dev/before-start-url.mdx +13 -0
  42. package/zh/configure/app/dev/host.mdx +13 -0
  43. package/zh/configure/app/output/ssg.mdx +3 -3
  44. package/zh/configure/app/server/ssr.mdx +19 -1
  45. package/zh/configure/app/source/entries-dir.mdx +1 -1
  46. package/zh/guides/advanced-features/rspack-start.mdx +69 -0
  47. package/zh/guides/advanced-features/ssg.mdx +8 -8
  48. package/zh/guides/advanced-features/ssr.mdx +213 -6
  49. package/zh/guides/basic-features/alias.mdx +4 -4
  50. package/zh/guides/{css/tailwindcss.mdx → basic-features/css.mdx} +60 -3
  51. package/zh/guides/basic-features/data-fetch.mdx +4 -4
  52. package/zh/guides/basic-features/env-vars.mdx +4 -0
  53. package/zh/guides/basic-features/routes.mdx +23 -7
  54. package/zh/guides/concept/builder.mdx +2 -2
  55. package/zh/guides/get-started/quick-start.mdx +2 -2
  56. package/zh/guides/topic-detail/micro-frontend/c03-main-app.mdx +1 -1
  57. package/zh/tutorials/first-app/c03-css.mdx +1 -1
  58. package/zh/tutorials/first-app/c07-container.mdx +17 -17
  59. package/zh/tutorials/first-app/c08-entries.mdx +23 -23
  60. package/en/apis/app/commands/_category_.json +0 -5
  61. package/en/apis/app/commands/build.mdx +0 -39
  62. package/en/apis/app/commands/dev.mdx +0 -61
  63. package/en/apis/app/commands/inspect.mdx +0 -61
  64. package/en/apis/app/commands/lint.mdx +0 -19
  65. package/en/apis/app/commands/new.mdx +0 -55
  66. package/en/apis/app/commands/serve.mdx +0 -27
  67. package/en/apis/app/commands/test.mdx +0 -35
  68. package/en/apis/app/commands/upgrade.mdx +0 -18
  69. package/en/guides/css/_category_.json +0 -5
  70. package/en/guides/css/css-in-js.mdx +0 -40
  71. package/en/guides/css/css-modules.mdx +0 -87
  72. package/en/guides/css/less-sass.mdx +0 -17
  73. package/en/guides/css/postcss.mdx +0 -79
  74. package/zh/apis/app/commands/_category_.json +0 -5
  75. package/zh/apis/app/commands/build.mdx +0 -39
  76. package/zh/apis/app/commands/dev.mdx +0 -61
  77. package/zh/apis/app/commands/inspect.mdx +0 -61
  78. package/zh/apis/app/commands/lint.mdx +0 -19
  79. package/zh/apis/app/commands/new.mdx +0 -54
  80. package/zh/apis/app/commands/serve.mdx +0 -27
  81. package/zh/apis/app/commands/test.mdx +0 -35
  82. package/zh/apis/app/commands/upgrade.mdx +0 -18
  83. package/zh/guides/css/_category_.json +0 -5
  84. package/zh/guides/css/css-in-js.mdx +0 -40
  85. package/zh/guides/css/css-modules.mdx +0 -87
  86. package/zh/guides/css/less-sass.mdx +0 -17
  87. package/zh/guides/css/postcss.mdx +0 -80
@@ -1 +1 @@
1
- [{"name":"assetPrefix","dirname":"dev"},{"name":"hmr","dirname":"dev"},{"name":"https","dirname":"dev"},{"name":"port","dirname":"dev"},{"name":"progressBar","dirname":"dev"},{"name":"startUrl","dirname":"dev"},{"name":"lazyCompilation","dirname":"experiments"},{"name":"appIcon","dirname":"html"},{"name":"crossorigin","dirname":"html"},{"name":"disableHtmlFolder","dirname":"html"},{"name":"favicon","dirname":"html"},{"name":"faviconByEntries","dirname":"html"},{"name":"inject","dirname":"html"},{"name":"injectByEntries","dirname":"html"},{"name":"meta","dirname":"html"},{"name":"metaByEntries","dirname":"html"},{"name":"mountId","dirname":"html"},{"name":"tags","dirname":"html"},{"name":"tagsByEntries","dirname":"html"},{"name":"template","dirname":"html"},{"name":"templateByEntries","dirname":"html"},{"name":"templateParameters","dirname":"html"},{"name":"templateParametersByEntries","dirname":"html"},{"name":"title","dirname":"html"},{"name":"titleByEntries","dirname":"html"},{"name":"assetPrefix","dirname":"output"},{"name":"assetsRetry","dirname":"output"},{"name":"charset","dirname":"output"},{"name":"cleanDistPath","dirname":"output"},{"name":"convertToRem","dirname":"output"},{"name":"copy","dirname":"output"},{"name":"cssModuleLocalIdentName","dirname":"output"},{"name":"dataUriLimit","dirname":"output"},{"name":"disableCssExtract","dirname":"output"},{"name":"disableCssModuleExtension","dirname":"output"},{"name":"disableFilenameHash","dirname":"output"},{"name":"disableInlineRuntimeChunk","dirname":"output"},{"name":"disableMinimize","dirname":"output"},{"name":"disableSourceMap","dirname":"output"},{"name":"disableTsChecker","dirname":"output"},{"name":"distPath","dirname":"output"},{"name":"enableAssetFallback","dirname":"output"},{"name":"enableAssetManifest","dirname":"output"},{"name":"enableCssModuleTSDeclaration","dirname":"output"},{"name":"enableInlineScripts","dirname":"output"},{"name":"enableInlineStyles","dirname":"output"},{"name":"enableLatestDecorators","dirname":"output"},{"name":"externals","dirname":"output"},{"name":"filename","dirname":"output"},{"name":"legalComments","dirname":"output"},{"name":"overrideBrowserslist","dirname":"output"},{"name":"polyfill","dirname":"output"},{"name":"svgDefaultExport","dirname":"output"},{"name":"buildCache","dirname":"performance"},{"name":"bundleAnalyze","dirname":"performance"},{"name":"chunkSplit","dirname":"performance"},{"name":"printFileSize","dirname":"performance"},{"name":"profile","dirname":"performance"},{"name":"removeConsole","dirname":"performance"},{"name":"removeMomentLocale","dirname":"performance"},{"name":"checkSyntax","dirname":"security"},{"name":"sri","dirname":"security"},{"name":"alias","dirname":"source"},{"name":"compileJsDataURI","dirname":"source"},{"name":"define","dirname":"source"},{"name":"exclude","dirname":"source"},{"name":"globalVars","dirname":"source"},{"name":"include","dirname":"source"},{"name":"moduleScopes","dirname":"source"},{"name":"preEntry","dirname":"source"},{"name":"resolveExtensionPrefix","dirname":"source"},{"name":"resolveMainFields","dirname":"source"},{"name":"autoprefixer","dirname":"tools"},{"name":"babel","dirname":"tools"},{"name":"cssExtract","dirname":"tools"},{"name":"cssLoader","dirname":"tools"},{"name":"devServer","dirname":"tools"},{"name":"htmlPlugin","dirname":"tools"},{"name":"inspector","dirname":"tools"},{"name":"less","dirname":"tools"},{"name":"minifyCss","dirname":"tools"},{"name":"postcss","dirname":"tools"},{"name":"pug","dirname":"tools"},{"name":"rspack","dirname":"tools"},{"name":"sass","dirname":"tools"},{"name":"styleLoader","dirname":"tools"},{"name":"styledComponents","dirname":"tools"},{"name":"terser","dirname":"tools"},{"name":"tsChecker","dirname":"tools"},{"name":"tsLoader","dirname":"tools"},{"name":"webpack","dirname":"tools"},{"name":"webpackChain","dirname":"tools"}]
1
+ [{"name":"assetPrefix","dirname":"dev"},{"name":"beforeStartUrl","dirname":"dev"},{"name":"hmr","dirname":"dev"},{"name":"host","dirname":"dev"},{"name":"https","dirname":"dev"},{"name":"port","dirname":"dev"},{"name":"progressBar","dirname":"dev"},{"name":"startUrl","dirname":"dev"},{"name":"lazyCompilation","dirname":"experiments"},{"name":"appIcon","dirname":"html"},{"name":"crossorigin","dirname":"html"},{"name":"disableHtmlFolder","dirname":"html"},{"name":"favicon","dirname":"html"},{"name":"faviconByEntries","dirname":"html"},{"name":"inject","dirname":"html"},{"name":"injectByEntries","dirname":"html"},{"name":"meta","dirname":"html"},{"name":"metaByEntries","dirname":"html"},{"name":"mountId","dirname":"html"},{"name":"tags","dirname":"html"},{"name":"tagsByEntries","dirname":"html"},{"name":"template","dirname":"html"},{"name":"templateByEntries","dirname":"html"},{"name":"templateParameters","dirname":"html"},{"name":"templateParametersByEntries","dirname":"html"},{"name":"title","dirname":"html"},{"name":"titleByEntries","dirname":"html"},{"name":"assetPrefix","dirname":"output"},{"name":"assetsRetry","dirname":"output"},{"name":"charset","dirname":"output"},{"name":"cleanDistPath","dirname":"output"},{"name":"convertToRem","dirname":"output"},{"name":"copy","dirname":"output"},{"name":"cssModuleLocalIdentName","dirname":"output"},{"name":"dataUriLimit","dirname":"output"},{"name":"disableCssExtract","dirname":"output"},{"name":"disableCssModuleExtension","dirname":"output"},{"name":"disableFilenameHash","dirname":"output"},{"name":"disableInlineRuntimeChunk","dirname":"output"},{"name":"disableMinimize","dirname":"output"},{"name":"disableSourceMap","dirname":"output"},{"name":"disableTsChecker","dirname":"output"},{"name":"distPath","dirname":"output"},{"name":"enableAssetFallback","dirname":"output"},{"name":"enableAssetManifest","dirname":"output"},{"name":"enableCssModuleTSDeclaration","dirname":"output"},{"name":"enableInlineScripts","dirname":"output"},{"name":"enableInlineStyles","dirname":"output"},{"name":"enableLatestDecorators","dirname":"output"},{"name":"externals","dirname":"output"},{"name":"filename","dirname":"output"},{"name":"legalComments","dirname":"output"},{"name":"overrideBrowserslist","dirname":"output"},{"name":"polyfill","dirname":"output"},{"name":"svgDefaultExport","dirname":"output"},{"name":"buildCache","dirname":"performance"},{"name":"bundleAnalyze","dirname":"performance"},{"name":"chunkSplit","dirname":"performance"},{"name":"printFileSize","dirname":"performance"},{"name":"profile","dirname":"performance"},{"name":"removeConsole","dirname":"performance"},{"name":"removeMomentLocale","dirname":"performance"},{"name":"checkSyntax","dirname":"security"},{"name":"sri","dirname":"security"},{"name":"alias","dirname":"source"},{"name":"compileJsDataURI","dirname":"source"},{"name":"define","dirname":"source"},{"name":"exclude","dirname":"source"},{"name":"globalVars","dirname":"source"},{"name":"include","dirname":"source"},{"name":"moduleScopes","dirname":"source"},{"name":"preEntry","dirname":"source"},{"name":"resolveExtensionPrefix","dirname":"source"},{"name":"resolveMainFields","dirname":"source"},{"name":"autoprefixer","dirname":"tools"},{"name":"babel","dirname":"tools"},{"name":"cssExtract","dirname":"tools"},{"name":"cssLoader","dirname":"tools"},{"name":"devServer","dirname":"tools"},{"name":"htmlPlugin","dirname":"tools"},{"name":"inspector","dirname":"tools"},{"name":"less","dirname":"tools"},{"name":"minifyCss","dirname":"tools"},{"name":"postcss","dirname":"tools"},{"name":"pug","dirname":"tools"},{"name":"rspack","dirname":"tools"},{"name":"sass","dirname":"tools"},{"name":"styleLoader","dirname":"tools"},{"name":"styledComponents","dirname":"tools"},{"name":"terser","dirname":"tools"},{"name":"tsChecker","dirname":"tools"},{"name":"tsLoader","dirname":"tools"},{"name":"webpack","dirname":"tools"},{"name":"webpackChain","dirname":"tools"}]
@@ -0,0 +1,299 @@
1
+ ---
2
+ sidebar_position: 1
3
+ ---
4
+
5
+ # 命令
6
+
7
+ Modern.js 内置了一些命令,可以帮助你快速启动开发服务器、构建生产环境代码等。
8
+
9
+ 通过本章节,你可以了解到 Modern.js 内置的命令有哪些,以及如何使用这些命令。
10
+
11
+ ## modern dev
12
+
13
+ `modern dev` 命令用于启动一个本地开发服务器,对源代码进行开发环境编译。
14
+
15
+ ```bash
16
+ Usage: modern dev [options]
17
+
18
+ Options:
19
+ -e --entry <entry> 指定入口,只编译特定的页面
20
+ -c --config <config> 指定配置文件路径,可以为相对路径或绝对路径
21
+ -h, --help 显示命令帮助
22
+ --analyze 分析构建产物体积,查看各个模块打包后的大小
23
+ --api-only 仅启动 API 接口服务
24
+ ```
25
+
26
+ 运行 `modern dev` 后,Modern.js 会监听源文件变化并进行模块热更新。
27
+
28
+ ```bash
29
+ $ modern dev
30
+
31
+ info Starting dev server...
32
+ info App running at:
33
+
34
+ > Local: http://localhost:8080/
35
+ > Network: http://192.168.0.1:8080/
36
+ ```
37
+
38
+ ### 编译部分页面
39
+
40
+ 在多页面(MPA)项目中,可以添加 `--entry` 参数来指定编译其中的一个或多个页面。这样可以只编译项目中的部分代码,从而提升 dev 启动速度。
41
+
42
+ 比如执行 `modern dev --entry`,在命令行界面中会展示入口选择框:
43
+
44
+ ```bash
45
+ $ modern dev --entry
46
+
47
+ ? 请选择需要构建的入口
48
+ ❯ ◯ foo
49
+ ◯ bar
50
+ ◯ baz
51
+ ```
52
+
53
+ 比如选择 `foo` 入口,那么只有 `foo` 入口相关的代码会进行编译,其他页面的代码将不会参与构建。
54
+
55
+ ### 通过参数指定页面
56
+
57
+ 你也可以在 `--entry` 后面通过参数来指定页面名称,多个页面的名称使用逗号分隔。
58
+
59
+ ```bash
60
+ # 编译 foo 页面
61
+ modern dev --entry foo
62
+
63
+ # 编译 foo 和 bar 页面
64
+ modern dev --entry foo,bar
65
+ ```
66
+
67
+ ## modern start
68
+
69
+ `modern start` 是 `modern dev` 命令的别名,两者的功能和用法完全一致。
70
+
71
+ ## modern build
72
+
73
+ `modern build` 命令默认会在 `dist/` 目录下构建出可用于生产环境的产物。你可以通过修改配置 [`output.distPath`](/configure/app/output/dist-path) 指定产物的输出目录。
74
+
75
+ ```bash
76
+ Usage: modern build [options]
77
+
78
+ Options:
79
+ -c --config <config> 指定配置文件路径,可以为相对路径或绝对路径
80
+ -h, --help 显示命令帮助
81
+ --analyze 分析构建产物体积,查看各个模块打包后的大小
82
+ ```
83
+
84
+ ### 分析构建产物体积
85
+
86
+ 执行 `npx modern build --analyze` 命令,可以在打包生产环境代码的同时,产出一个分析构建产物体积的 HTML 文件:
87
+
88
+ ```
89
+ Bundle Analyzer saved report to /example/dist/report.html
90
+ File sizes after production build:
91
+
92
+ 122.35 KB dist/static/js/885.1d4fbe5a.js
93
+ 2.3 KB dist/static/js/main.4b8e8d64.js
94
+ 761 B dist/static/js/runtime-main.edb7cf35.js
95
+ 645 B dist/static/css/main.0dd3ecc1.css
96
+ ```
97
+
98
+ 手动在浏览器中打开上述 HTML 文件,可以看到打包产物的瓦片图,并进行包体积分析和优化:
99
+
100
+ <img src="https://lf3-static.bytednsdoc.com/obj/eden-cn/aphqeh7uhohpquloj/modern-js/mwa-build-analyze-8784f762c1ab0cb20935829d5f912c4c.png" />
101
+
102
+ > 该功能基于 [webpack-bundle-analyzer](https://github.com/webpack-contrib/webpack-bundle-analyzer) 实现。
103
+
104
+ ## modern new
105
+
106
+ `modern new` 命令用于在已有项目中添加项目元素。
107
+
108
+ 比如添加应用入口、启用启用一些可选功能如 Tailwind CSS、微前端开发模式等。
109
+
110
+ ```bash
111
+ Usage: modern new [options]
112
+
113
+ Options:
114
+ -d, --debug 开启 Debug 模式,打印调试日志信息 (default: false)
115
+ -c, --config <config> 生成器运行默认配置(JSON 字符串)
116
+ --dist-tag <tag> 生成器使用特殊的 npm Tag 版本
117
+ --registry 生成器运行过程中定制 npm Registry
118
+ -h, --help 显示命令帮助
119
+ ```
120
+
121
+ ### 添加入口
122
+
123
+ 在应用工程中,执行 `new` 命令添加入口如下:
124
+
125
+ ```bash
126
+ $ npx modern new
127
+ ? 请选择你想要的操作 创建工程元素
128
+ ? 创建工程元素 新建「应用入口」
129
+ ? 请填写入口名称 entry
130
+ ```
131
+
132
+ ### 启用可选功能
133
+
134
+ 在应用工程中,执行 `new` 命令启用可选能力如下:
135
+
136
+ ```bash
137
+ $ npx modern new
138
+ ? 请选择你想要的操作 启用可选功能
139
+ ? 启用可选功能 (Use arrow keys)
140
+ ❯ 启用 Tailwind CSS 支持
141
+ 启用「BFF」功能
142
+ 启用「微前端」模式
143
+ 启用「单元测试 / 集成测试」功能
144
+ 启用「Visual Testing (Storybook)」模式
145
+ ```
146
+
147
+ :::tip
148
+ `--config` 参数对应参数值需要使用 JSON 字符串。
149
+
150
+ pnpm 暂不支持使用 JSON 字符串作为参数值,可使用 `npm new` 开启相关功能。【[相关 Issue](https://github.com/pnpm/pnpm/issues/3876)】
151
+
152
+ :::
153
+
154
+ ## modern serve
155
+
156
+ `modern serve` 命令用于在生产环境下启用应用工程, 注意需要提前执行 [`build`](/apis/app/commands#modern-build) 命令构建出对应产物。
157
+
158
+ ```bash
159
+ Usage: modern serve [options]
160
+
161
+ Options:
162
+ -c --config <config> 指定配置文件路径,可以为相对路径或绝对路径
163
+ -h, --help 显示命令帮助
164
+ --api-only 仅启动 API 接口服务
165
+ ```
166
+
167
+ 默认情况下,应用将会在 `localhost:8080` 启动,可以通过 `server.port` 修改 Server 端口号:
168
+
169
+ ```js
170
+ export default defineConfig({
171
+ server: {
172
+ port: 8081,
173
+ },
174
+ });
175
+ ```
176
+
177
+ ## modern upgrade
178
+
179
+ 在项目根目录下执行命令 `npx modern upgrade`,会默认将当前执行命令项目的 `package.json` 中的 Modern.js 相关依赖更新至最新版本。
180
+
181
+ ```
182
+ Usage: modern upgrade [options]
183
+
184
+ Options:
185
+ --registry <registry> 定制 npm registry (default: "")
186
+ -d,--debug 开启 Debug 模式,打印调试日志信息 (default: false)
187
+ --cwd <cwd> 项目路径 (default: "")
188
+ -h, --help display help for command
189
+ ```
190
+
191
+ ## modern inspect
192
+
193
+ `modern inspect` 命令用于查看项目的 [Modern.js Builder 配置](https://modernjs.dev/builder/guide/basic/builder-config.html) 以及 webpack 配置。
194
+
195
+ ```
196
+ Usage: modern inspect [options]
197
+
198
+ Options:
199
+ --env <env> 查看指定环境下的配置 (default: "development")
200
+ --output <output> 指定在 dist 目录下输出的路径 (default: "/")
201
+ --verbose 在结果中展示函数的完整内容
202
+ -c --config <config> 指定配置文件路径,可以为相对路径或绝对路径
203
+ -h, --help 显示命令帮助
204
+ ```
205
+
206
+ 在项目根目录下执行命令 `npx modern inspect` 后,会在项目的 `dist` 目录生成以下文件:
207
+
208
+ - `builder.config.js`: 表示在构建时使用的 Modern.js Builder 配置。
209
+ - `webpack.config.web.js`: 表示在构建时使用的 webpack 配置。
210
+
211
+ ```bash
212
+ ➜ npx modern inspect
213
+
214
+ Inspect config succeed, open following files to view the content:
215
+
216
+ - Builder Config: /root/my-project/dist/builder.config.js
217
+ - Webpack Config (web): /root/my-project/dist/webpack.config.web.js
218
+ ```
219
+
220
+ ### 指定环境
221
+
222
+ 默认情况下,inspect 命令会输出开发环境的配置,你可以添加 `--env production` 选项来输出生产环境的配置:
223
+
224
+ ```bash
225
+ modern inspect --env production
226
+ ```
227
+
228
+ ### 完整内容
229
+
230
+ 默认情况下,inspect 命令会省略配置对象中的函数内容,你可以添加 `--verbose` 选项来输出函数的完整内容:
231
+
232
+ ```bash
233
+ modern inspect --verbose
234
+ ```
235
+
236
+ ### SSR 构建配置
237
+
238
+ 如果项目开启了 SSR 能力,则在 `dist` 目录会另外生成一份 `webpack.config.node.js` 文件,对应 SSR 构建时的 webpack 配置。
239
+
240
+ ```bash
241
+ ➜ npx modern inspect
242
+
243
+ Inspect config succeed, open following files to view the content:
244
+
245
+ - Builder Config: /root/my-project/dist/builder.config.js
246
+ - Webpack Config (web): /root/my-project/dist/webpack.config.web.js
247
+ - Webpack Config (node): /root/my-project/dist/webpack.config.node.js
248
+ ```
249
+
250
+ ## modern lint
251
+
252
+ 运行 `ESLint` 进行代码语法检查。
253
+
254
+ ```bash
255
+ Usage: modern lint [options] [...files]
256
+
257
+ lint and fix source files
258
+
259
+ Options:
260
+ --no-fix disable auto fix source file
261
+ -h, --help display help for command
262
+ ```
263
+
264
+ 通常情况下,我们只需要在 `git commit` 阶段通过 `lint-staged` 检查本次提交修改的部分代码。
265
+
266
+ - 设置 `--no-fix` 参数后可以关闭自动修复 lint 错误代码的能力。
267
+
268
+ ## modern test
269
+
270
+ `modern test` 命令会自动运行项目下的测试用例。
271
+
272
+ ```bash
273
+ Usage: modern test [options]
274
+
275
+ Options:
276
+ -h, --help 显示命令帮助
277
+ ```
278
+
279
+ :::tip
280
+ 在使用 `modern test` 命令前,需要先通过 [`new`](/apis/app/commands#modern-new) 命令启用「单元测试 / 集成测试」功能。
281
+ :::
282
+
283
+ 效果如下:
284
+
285
+ ```bash
286
+ $ npx modern test
287
+ PASS src/tests/index.test.ts
288
+ The add method
289
+ ✓ should work fine. (2ms)
290
+
291
+ Test Suites: 1 passed, 1 total
292
+ Tests: 1 passed, 1 total
293
+ Snapshots: 0 total
294
+ Time: 0.994 s, estimated 1 s
295
+ ```
296
+
297
+ :::info
298
+ `src` 和 `api` 目录下面的 `*.test.(js|ts)` 文件都会被识别为测试用例。
299
+ :::
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "label": "文件约定",
3
- "position": 1,
3
+ "position": 2,
4
4
  "collapsed": false
5
5
  }
@@ -26,13 +26,23 @@ sidebar_position: 4
26
26
 
27
27
  ## 更多用法
28
28
 
29
- 不论是在[自定义 HTML](/guides/basic-features/html) 中,或是在 [`config/public/`](/apis/app/hooks/config/public) 下的任意 HTML 文件中,都可以直接使用 HTML 标签引用 `config/upload/` 目录下的资源:
29
+ 在 React 组件中,可以通过[内置环境变量](/guides/basic-features/env-vars.html#asset_prefix)来添加该前缀:
30
+
31
+ ```tsx
32
+ export default () => {
33
+ return (
34
+ <img src={`${process.env.ASSET_PREFIX}/upload/banner.png`}></img>
35
+ );
36
+ };
37
+ ```
38
+
39
+ 另外,不论是在[自定义 HTML](/guides/basic-features/html) 中,或是在 [`config/public/`](/apis/app/hooks/config/public) 下的任意 HTML 文件中,都可以直接使用 HTML 标签引用 `config/upload/` 目录下的资源:
30
40
 
31
41
  ```html
32
42
  <script src="/upload/index.js"></script>
33
43
  ```
34
44
 
35
- 如果设置了 [`output.assetPrefix`](/configure/app/output/asset-prefix) 前缀,也可以直接使用模板语法添加该前缀:
45
+ 如果设置了 [`dev.assetPrefix`](/configure/app/dev/asset-prefix) 或 [`output.assetPrefix`](/configure/app/output/asset-prefix) 前缀,也可以直接使用模板语法添加该前缀:
36
46
 
37
47
  ```html
38
48
  <script src="<%=assetPrefix %>/upload/index.js"></script>
@@ -44,9 +44,9 @@ sidebar_position: 2
44
44
  ```
45
45
  └── routes
46
46
  ├── [id]
47
-    └── page.tsx
47
+ └── page.tsx
48
48
  ├── blog
49
-    └── page.tsx
49
+ └── page.tsx
50
50
  └── page.tsx
51
51
  ```
52
52
 
@@ -31,11 +31,11 @@ Modern.js 生成器除了在项目初始化时工作外,也能在后续研发
31
31
  .
32
32
  ├── node_modules
33
33
  ├── src
34
-    ├── modern-app-env.d.ts
35
-    └── routes
36
-    ├── index.css
37
-    ├── layout.tsx
38
-    └── page.tsx
34
+ ├── modern-app-env.d.ts
35
+ └── routes
36
+ ├── index.css
37
+ ├── layout.tsx
38
+ └── page.tsx
39
39
  ├── modern.config.ts
40
40
  ├── package.json
41
41
  ├── pnpm-lock.yaml
@@ -8,7 +8,7 @@ sidebar_label: prefix
8
8
  - **默认值:** `/api`
9
9
 
10
10
  :::caution 注意
11
- 请先在当前应用项目根目录使用【[new](/apis/app/commands/new)】 启用 BFF 功能。
11
+ 请先在当前应用项目根目录使用【[new](/apis/app/commands#modern-new)】 启用 BFF 功能。
12
12
 
13
13
  :::
14
14
 
@@ -8,7 +8,7 @@ sidebar_label: proxy
8
8
  - **默认值:** `{}`
9
9
 
10
10
  :::info 补充信息
11
- 请先在当前应用项目根目录使用【[new](/apis/app/commands/new)】 启用 BFF 功能。
11
+ 请先在当前应用项目根目录使用【[new](/apis/app/commands#modern-new)】 启用 BFF 功能。
12
12
 
13
13
  :::
14
14
 
@@ -0,0 +1,13 @@
1
+ ---
2
+ sidebar_label: beforeStartUrl
3
+ ---
4
+
5
+ # dev.beforeStartUrl
6
+
7
+ :::tip
8
+ 该配置由 Modern.js Builder 提供,更多信息可参考 [dev.beforeStartUrl](https://modernjs.dev/builder/api/config-dev.html#devbeforestarturl)。
9
+ :::
10
+
11
+ import Main from '@modern-js/builder-doc/docs/zh/config/dev/beforeStartUrl.md'
12
+
13
+ <Main />
@@ -0,0 +1,13 @@
1
+ ---
2
+ sidebar_label: host
3
+ ---
4
+
5
+ # dev.host
6
+
7
+ :::tip
8
+ 该配置由 Modern.js Builder 提供,更多信息可参考 [dev.host](https://modernjs.dev/builder/api/config-dev.html#devhost)。
9
+ :::
10
+
11
+ import Main from '@modern-js/builder-doc/docs/zh/config/dev/host.md'
12
+
13
+ <Main />
@@ -66,7 +66,7 @@ import SelfRouteExample from "@site-docs/components/self-route-example";
66
66
  ```bash
67
67
 
68
68
  ├── src
69
-    ├── entryA
69
+ ├── entryA
70
70
  │ │ └── routes
71
71
  │ │ ├── layout.tsx
72
72
  │ │ ├── page.tsx
@@ -75,8 +75,8 @@ import SelfRouteExample from "@site-docs/components/self-route-example";
75
75
  │ │ ├── page.tsx
76
76
  │ │ └── profile
77
77
  │ │ └── page.tsx
78
-    └── entryB
79
-    └── App.tsx
78
+ └── entryB
79
+ └── App.tsx
80
80
  ```
81
81
 
82
82
  默认情况下,所有约定式路由的入口,在设置 `output.ssg` 配置为 `true` 后都会在构建阶段渲染。可以配置 `false` 来取消指定入口的的默认行为,例如取消上述 entryA 入口在构建时的渲染:
@@ -4,11 +4,13 @@ sidebar_label: ssr
4
4
 
5
5
  # server.ssr
6
6
 
7
- - **类型:** `boolean`
7
+ - **类型:** `boolean` | `Object`
8
8
  - **默认值:** `false`
9
9
 
10
10
  SSR 开关以及相关设置。
11
11
 
12
+ ### Boolean 类型
13
+
12
14
  当值类型为 `boolean` 时,表示是否开启 SSR 部署模式,默认 `false` 不开启。
13
15
 
14
16
  ```ts title="modern.config.ts"
@@ -18,3 +20,19 @@ export default defineConfig({
18
20
  },
19
21
  });
20
22
  ```
23
+
24
+ ### Object 类型
25
+
26
+ 当值类型为 `Object` 时,可以配置如下属性:
27
+
28
+ - `mode`:`string = 'string'`,默认为使用 `renderToString` 渲染。配置为 'stream' 开启流式渲染。
29
+ - `forceCSR`:`boolean = false`,默认关闭强制 CSR 渲染。配置为 `true` 后,在页面访问时添加 `?csr=true` 即可强制 CSR。
30
+
31
+ ```ts title="modern.config.ts"
32
+ export default defineConfig({
33
+ server: {
34
+ forceCSR: true,
35
+ mode: 'stream',
36
+ },
37
+ });
38
+ ```
@@ -25,7 +25,7 @@ export default defineConfig({
25
25
  └── src
26
26
  └── pages
27
27
  ├── a
28
-    └── App.jsx
28
+ └── App.jsx
29
29
  └── b
30
30
  └── App.jsx
31
31
  ```
@@ -0,0 +1,69 @@
1
+ ---
2
+ title: 使用 Rspack
3
+ sidebar_position: 12
4
+ ---
5
+
6
+ # 使用 Rspack
7
+
8
+ [Rspack](https://www.rspack.org/) 是字节跳动 Web Infra 团队自研的 Rust Bundler,核心架构对齐 webpack 实现,并对社区常用的构建能力做了开箱即用的支持。
9
+
10
+ Rspack 通过以下方式来提升编译性能:
11
+
12
+ - 高度 LTO 优化的 Native code。
13
+ - 充分利用多核优势,整个编译过程充分进行多线程优化。
14
+ - 基于请求的按需编译(Lazy Compilation),减小每次编译的模块数目,以提升冷启动的速度。
15
+
16
+ ## 初始化 rspack 项目
17
+
18
+ Modern.js 生成器会提供一个可交互的问答界面,只需将构建工具选择为**rspack**,即可创建一个 rspack 项目:
19
+
20
+ ```bash
21
+ $ npx @modern-js/create myapp
22
+ ? 请选择你想创建的工程类型 应用
23
+ ? 请选择开发语言 TS
24
+ ? 请选择包管理工具 pnpm
25
+ ? 请选择构建工具 rspack
26
+ ```
27
+
28
+ 项目创建完成后,在项目中执行 `pnpm run dev` 即可体验项目。更多项目信息可参考[快速上手](/guides/get-started/quick-start.html)。
29
+
30
+ :::tip
31
+ 使用 rspack 作为打包工具时,以下功能暂不支持使用:
32
+
33
+ - 服务端渲染(SSR)
34
+ - 静态站点生成(SSG)
35
+ - 微前端(Micro Frontend)
36
+ - Storybook 调试
37
+
38
+ :::
39
+
40
+ ## 从 webpack 迁移至 rspack
41
+
42
+ 通过执行 `pnpm run new` 可启用 rspack 构建:
43
+
44
+ ```bash
45
+ $ pnpm run new
46
+ ? 请选择你想要的操作 启用可选功能
47
+ ? 启用可选功能 启用「rspack 构建」
48
+ ```
49
+
50
+ 执行命令后,在 modern.config.ts 中开启 rspack 构建:
51
+
52
+ ```ts title=modern.config.ts
53
+ import appTools, { defineConfig } from '@modern-js/app-tools';
54
+
55
+ export default defineConfig<'rspack'>({
56
+ runtime: {
57
+ router: true,
58
+ },
59
+ plugins: [
60
+ appTools({
61
+ bundler: 'experimental-rspack',
62
+ }),
63
+ ],
64
+ });
65
+ ```
66
+
67
+ :::tip
68
+ 从 webpack 迁移至 rspack,会有一些构建和配置能力上的差异,详情可参考:[配置差异](https://modernjs.dev/builder/guide/advanced/rspack-start.html#从-webpack-迁移到-rspack)
69
+ :::
@@ -37,14 +37,14 @@ SSG 在**约定式路由**和**自控式路由**下的使用方式不同。
37
37
  ```
38
38
  .
39
39
  ├── src
40
-    └── routes
41
-    ├── layout.tsx
42
-    ├── page.tsx
43
-    └── user
44
-    ├── layout.tsx
45
-    ├── page.tsx
46
-    └── profile
47
-    └── page.tsx
40
+ └── routes
41
+ ├── layout.tsx
42
+ ├── page.tsx
43
+ └── user
44
+ ├── layout.tsx
45
+ ├── page.tsx
46
+ └── profile
47
+ └── page.tsx
48
48
  ```
49
49
 
50
50
  上述文件目录将会生成以下三条路由: