@modern-js/main-doc 2.5.0 → 2.7.0
Sign up to get free protection for your applications and to get access to all the features.
- package/.turbo/turbo-build.log +1 -1
- package/en/apis/app/commands.mdx +297 -0
- package/en/apis/app/hooks/_category_.json +1 -1
- package/en/apis/app/hooks/config/upload.mdx +10 -0
- package/en/apis/app/hooks/src/routes.mdx +2 -2
- package/en/components/init-app.mdx +5 -5
- package/en/configure/app/bff/prefix.mdx +2 -3
- package/en/configure/app/bff/proxy.mdx +1 -1
- package/en/configure/app/dev/before-start-url.mdx +13 -0
- package/en/configure/app/dev/host.mdx +13 -0
- package/en/configure/app/output/ssg.mdx +3 -3
- package/en/configure/app/runtime/master-app.mdx +1 -1
- package/en/configure/app/server/ssr.mdx +18 -0
- package/en/configure/app/source/entries-dir.mdx +1 -1
- package/en/configure/app/testing/transformer.mdx +1 -1
- package/en/configure/app/tools/jest.mdx +1 -1
- package/en/guides/advanced-features/rspack-start.mdx +69 -0
- package/en/guides/advanced-features/ssg.mdx +8 -8
- package/en/guides/advanced-features/ssr.mdx +210 -5
- package/en/guides/basic-features/alias.mdx +4 -4
- package/en/guides/{css/tailwindcss.mdx → basic-features/css.mdx} +60 -3
- package/en/guides/basic-features/data-fetch.mdx +4 -4
- package/en/guides/basic-features/env-vars.mdx +4 -0
- package/en/guides/basic-features/routes.mdx +23 -7
- package/en/guides/concept/builder.mdx +1 -1
- package/en/guides/get-started/quick-start.mdx +2 -2
- package/en/guides/topic-detail/micro-frontend/c03-main-app.mdx +1 -1
- package/en/tutorials/first-app/c03-css.mdx +1 -1
- package/en/tutorials/first-app/c07-container.mdx +17 -17
- package/en/tutorials/first-app/c08-entries.mdx +23 -23
- package/package.json +3 -3
- package/scripts/summary.en.json +1 -1
- package/scripts/summary.zh.json +1 -1
- package/zh/apis/app/commands.mdx +299 -0
- package/zh/apis/app/hooks/_category_.json +1 -1
- package/zh/apis/app/hooks/config/upload.mdx +12 -2
- package/zh/apis/app/hooks/src/routes.mdx +2 -2
- package/zh/components/init-app.mdx +5 -5
- package/zh/configure/app/bff/prefix.mdx +1 -1
- package/zh/configure/app/bff/proxy.mdx +1 -1
- package/zh/configure/app/dev/before-start-url.mdx +13 -0
- package/zh/configure/app/dev/host.mdx +13 -0
- package/zh/configure/app/output/ssg.mdx +3 -3
- package/zh/configure/app/server/ssr.mdx +19 -1
- package/zh/configure/app/source/entries-dir.mdx +1 -1
- package/zh/guides/advanced-features/rspack-start.mdx +69 -0
- package/zh/guides/advanced-features/ssg.mdx +8 -8
- package/zh/guides/advanced-features/ssr.mdx +213 -6
- package/zh/guides/basic-features/alias.mdx +4 -4
- package/zh/guides/{css/tailwindcss.mdx → basic-features/css.mdx} +60 -3
- package/zh/guides/basic-features/data-fetch.mdx +4 -4
- package/zh/guides/basic-features/env-vars.mdx +4 -0
- package/zh/guides/basic-features/routes.mdx +23 -7
- package/zh/guides/concept/builder.mdx +2 -2
- package/zh/guides/get-started/quick-start.mdx +2 -2
- package/zh/guides/topic-detail/micro-frontend/c03-main-app.mdx +1 -1
- package/zh/tutorials/first-app/c03-css.mdx +1 -1
- package/zh/tutorials/first-app/c07-container.mdx +17 -17
- package/zh/tutorials/first-app/c08-entries.mdx +23 -23
- package/en/apis/app/commands/_category_.json +0 -5
- package/en/apis/app/commands/build.mdx +0 -39
- package/en/apis/app/commands/dev.mdx +0 -61
- package/en/apis/app/commands/inspect.mdx +0 -61
- package/en/apis/app/commands/lint.mdx +0 -19
- package/en/apis/app/commands/new.mdx +0 -55
- package/en/apis/app/commands/serve.mdx +0 -27
- package/en/apis/app/commands/test.mdx +0 -35
- package/en/apis/app/commands/upgrade.mdx +0 -18
- package/en/guides/css/_category_.json +0 -5
- package/en/guides/css/css-in-js.mdx +0 -40
- package/en/guides/css/css-modules.mdx +0 -87
- package/en/guides/css/less-sass.mdx +0 -17
- package/en/guides/css/postcss.mdx +0 -79
- package/zh/apis/app/commands/_category_.json +0 -5
- package/zh/apis/app/commands/build.mdx +0 -39
- package/zh/apis/app/commands/dev.mdx +0 -61
- package/zh/apis/app/commands/inspect.mdx +0 -61
- package/zh/apis/app/commands/lint.mdx +0 -19
- package/zh/apis/app/commands/new.mdx +0 -54
- package/zh/apis/app/commands/serve.mdx +0 -27
- package/zh/apis/app/commands/test.mdx +0 -35
- package/zh/apis/app/commands/upgrade.mdx +0 -18
- package/zh/guides/css/_category_.json +0 -5
- package/zh/guides/css/css-in-js.mdx +0 -40
- package/zh/guides/css/css-modules.mdx +0 -87
- package/zh/guides/css/less-sass.mdx +0 -17
- package/zh/guides/css/postcss.mdx +0 -80
package/scripts/summary.zh.json
CHANGED
@@ -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
|
+
:::
|
@@ -26,13 +26,23 @@ sidebar_position: 4
|
|
26
26
|
|
27
27
|
## 更多用法
|
28
28
|
|
29
|
-
|
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>
|
@@ -31,11 +31,11 @@ Modern.js 生成器除了在项目初始化时工作外,也能在后续研发
|
|
31
31
|
.
|
32
32
|
├── node_modules
|
33
33
|
├── src
|
34
|
-
│
|
35
|
-
│
|
36
|
-
│
|
37
|
-
│
|
38
|
-
│
|
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
|
@@ -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
|
-
│
|
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
|
-
│
|
79
|
-
│
|
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
|
+
```
|
@@ -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
|
-
│
|
41
|
-
│
|
42
|
-
│
|
43
|
-
│
|
44
|
-
│
|
45
|
-
│
|
46
|
-
│
|
47
|
-
│
|
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
|
上述文件目录将会生成以下三条路由:
|