@modern-js/main-doc 2.51.0 → 2.53.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 (68) hide show
  1. package/docs/en/apis/app/runtime/web-server/unstable_middleware.mdx +30 -4
  2. package/docs/en/guides/advanced-features/web-server.mdx +4 -2
  3. package/docs/en/guides/basic-features/data/data-fetch.mdx +28 -0
  4. package/docs/en/guides/basic-features/deploy.mdx +143 -33
  5. package/docs/en/guides/basic-features/routes.mdx +2 -2
  6. package/docs/en/guides/get-started/tech-stack.mdx +0 -6
  7. package/docs/en/guides/topic-detail/framework-plugin/plugin-api.mdx +1 -1
  8. package/docs/en/guides/topic-detail/generator/create/option.md +0 -5
  9. package/docs/en/guides/topic-detail/generator/create/use.mdx +1 -10
  10. package/docs/en/guides/topic-detail/generator/new/config.md +0 -29
  11. package/docs/en/guides/topic-detail/generator/new/use.md +0 -20
  12. package/docs/zh/apis/app/runtime/web-server/unstable_middleware.mdx +30 -4
  13. package/docs/zh/guides/advanced-features/web-server.mdx +1 -1
  14. package/docs/zh/guides/basic-features/data/data-fetch.mdx +27 -2
  15. package/docs/zh/guides/basic-features/deploy.mdx +140 -36
  16. package/docs/zh/guides/basic-features/routes.mdx +2 -2
  17. package/docs/zh/guides/get-started/tech-stack.mdx +0 -6
  18. package/docs/zh/guides/topic-detail/framework-plugin/plugin-api.mdx +1 -1
  19. package/docs/zh/guides/topic-detail/generator/create/option.md +0 -5
  20. package/docs/zh/guides/topic-detail/generator/create/use.mdx +1 -10
  21. package/docs/zh/guides/topic-detail/generator/new/config.md +0 -31
  22. package/docs/zh/guides/topic-detail/generator/new/use.md +0 -20
  23. package/package.json +5 -5
  24. package/docs/en/apis/app/runtime/testing/_category_.json +0 -4
  25. package/docs/en/apis/app/runtime/testing/act.mdx +0 -35
  26. package/docs/en/apis/app/runtime/testing/cleanup.mdx +0 -40
  27. package/docs/en/apis/app/runtime/testing/render.mdx +0 -71
  28. package/docs/en/apis/app/runtime/testing/renderApp.mdx +0 -34
  29. package/docs/en/configure/app/testing/_category_.json +0 -4
  30. package/docs/en/configure/app/testing/transformer.mdx +0 -17
  31. package/docs/en/configure/app/tools/jest.mdx +0 -40
  32. package/docs/en/guides/advanced-features/testing.mdx +0 -47
  33. package/docs/en/guides/topic-detail/changesets/_category_.json +0 -4
  34. package/docs/en/guides/topic-detail/changesets/add.mdx +0 -125
  35. package/docs/en/guides/topic-detail/changesets/changelog.mdx +0 -238
  36. package/docs/en/guides/topic-detail/changesets/commit.mdx +0 -269
  37. package/docs/en/guides/topic-detail/changesets/config.mdx +0 -147
  38. package/docs/en/guides/topic-detail/changesets/github.mdx +0 -175
  39. package/docs/en/guides/topic-detail/changesets/introduce.mdx +0 -56
  40. package/docs/en/guides/topic-detail/changesets/release-note.mdx +0 -274
  41. package/docs/en/guides/topic-detail/changesets/release-pre.mdx +0 -49
  42. package/docs/en/guides/topic-detail/changesets/release.mdx +0 -229
  43. package/docs/en/guides/topic-detail/model/test-model.mdx +0 -45
  44. package/docs/zh/apis/app/runtime/testing/_category_.json +0 -4
  45. package/docs/zh/apis/app/runtime/testing/act.mdx +0 -35
  46. package/docs/zh/apis/app/runtime/testing/cleanup.mdx +0 -40
  47. package/docs/zh/apis/app/runtime/testing/render.mdx +0 -71
  48. package/docs/zh/apis/app/runtime/testing/renderApp.mdx +0 -32
  49. package/docs/zh/configure/app/testing/_category_.json +0 -4
  50. package/docs/zh/configure/app/testing/transformer.mdx +0 -19
  51. package/docs/zh/configure/app/tools/jest.mdx +0 -40
  52. package/docs/zh/guides/advanced-features/testing.mdx +0 -47
  53. package/docs/zh/guides/topic-detail/changesets/_category_.json +0 -4
  54. package/docs/zh/guides/topic-detail/changesets/add.mdx +0 -126
  55. package/docs/zh/guides/topic-detail/changesets/changelog.mdx +0 -238
  56. package/docs/zh/guides/topic-detail/changesets/commit.mdx +0 -269
  57. package/docs/zh/guides/topic-detail/changesets/config.mdx +0 -147
  58. package/docs/zh/guides/topic-detail/changesets/github.mdx +0 -175
  59. package/docs/zh/guides/topic-detail/changesets/introduce.mdx +0 -56
  60. package/docs/zh/guides/topic-detail/changesets/release-note.mdx +0 -274
  61. package/docs/zh/guides/topic-detail/changesets/release-pre.mdx +0 -50
  62. package/docs/zh/guides/topic-detail/changesets/release.mdx +0 -231
  63. package/docs/zh/guides/topic-detail/model/test-model.mdx +0 -45
  64. package/docs/zh/guides/topic-detail/monorepo/_category_.json +0 -4
  65. package/docs/zh/guides/topic-detail/monorepo/create-sub-project.mdx +0 -53
  66. package/docs/zh/guides/topic-detail/monorepo/intro.mdx +0 -14
  67. package/docs/zh/guides/topic-detail/monorepo/publish.mdx +0 -69
  68. package/docs/zh/guides/topic-detail/monorepo/sub-project-interface.mdx +0 -143
@@ -1,274 +0,0 @@
1
- ---
2
- sidebar_position: 8
3
- ---
4
-
5
- # 自定义 Release Note 格式
6
-
7
- Modern.js 提供了 `modern gen-release-note` 命令,支持通过当前存在的 changeset 和 git commit 信息自动生成 Release Note 信息,在发布命令执行之前,可以通过执行该命令生成本次发布的 Release Note。
8
-
9
- 默认生成的 Release Note 格式为:
10
-
11
- ```markdown
12
- - fix: add missing type definitions by @zllkjc in https://github.com/web-infra-dev/modern.js/pull/3835
13
- ```
14
-
15
- 根据 commit 信息获取 changeset 的 Pull Request ID,并生成 Github 的链接,内容为 changeset 的 changelog 信息和作者信息。
16
-
17
- :::info
18
- 获取作者信息,需要提供 Github Token 环境变量,通过 GITHUB_AUTH_TOKEN 传入。
19
- :::
20
-
21
- 当默认生成 Release Note 逻辑不能满足需求时,支持自定义 Release Note 格式。
22
-
23
- ## 信息
24
-
25
- ### getReleaseInfo
26
-
27
- 生成 Release Note 信息需要先收集一些信息,比如 commit ID、Pull Request ID、commit message 等等。
28
-
29
- 该逻辑可通过 `getReleaseInfo` 函数实现。
30
-
31
- #### Params
32
-
33
- - commit
34
-
35
- 类型: string;
36
-
37
- 当前 changeset 对应的 commit message 信息。
38
-
39
- 执行 `git log --pretty=format:%h--%s--%ae .changeset/${changeset.id}.md` 的结果。
40
-
41
- - commitObj
42
-
43
- 初步解析 commit 获取基本信息。
44
-
45
- ```ts
46
- export enum CommitType {
47
- Performance = 'performance',
48
- Features = 'features',
49
- BugFix = 'bugFix',
50
- Doc = 'doc',
51
- Other = 'other',
52
- }
53
-
54
- interface Commit {
55
- id: string; // commit id
56
- type: CommitType;
57
- repository?: string; // 参数传入的 repo 信息或者 package.json 中定义的 repository 信息
58
- pullRequestId?: string;
59
- author?: string;
60
- message: string; // commit message
61
- summary: string; // changeset summary
62
- summary_zh: string; // changeset zh summary
63
- [key: string]: string | undefined;
64
- }
65
- ```
66
-
67
- #### 返回值
68
-
69
- commitObj, 补充后完整的 commit 对象。
70
-
71
- #### 默认实现
72
-
73
- Modern.js 的默认实现为:根据 commit 信息拆分出 Pull Request ID,并根据 commit id 获取到用户信息,加入到 commitObj 中。
74
-
75
- ```ts
76
- function getReleaseInfo(commit: string, commitObj: Commit) {
77
- const commitRegex = /(.*)\(#(\d*)\)/;
78
-
79
- const [commitId, message, email] = commit.split('--');
80
-
81
- const author = AuthorMap.get(email);
82
- const token = authToken || process.env.GITHUB_AUTH_TOKEN;
83
- if (author) {
84
- commitObj.author = author;
85
- } else if (repo && token) {
86
- try {
87
- const res = await axios.get(
88
- `https://api.github.com/repos/${repo}/commits/${commitId}`,
89
- {
90
- method: 'GET',
91
- headers: {
92
- 'Content-Type': 'application/json',
93
- Authorization: token,
94
- },
95
- },
96
- );
97
- const author = res.data.author.login;
98
- commitObj.author = author;
99
- AuthorMap.set(email, author);
100
- } catch (e) {
101
- console.warn(e);
102
- }
103
- }
104
-
105
- if ((message || commitObj.summary).match(commitRegex)) {
106
- const [, messageShort, pullRequestId] = (
107
- message || commitObj.summary
108
- ).match(commitRegex)!;
109
- commitObj.pullRequestId = pullRequestId;
110
- commitObj.message = messageShort.trim();
111
- }
112
-
113
- return commitObj;
114
- }
115
- ```
116
-
117
- #### getReleaseNoteLine
118
-
119
- 根据 `getReleaseInfo` 中获取的 commit 对象信息,生成对应的 Release Note。
120
-
121
- 该逻辑可通过 `getReleaseNoteLine` 函数实现。
122
-
123
- #### Params
124
-
125
- - commit
126
-
127
- 类型和上述 commitObj 类型一致。
128
-
129
- - lang
130
-
131
- 类型: string;
132
-
133
- 获取对应语言的 Release Note 信息,支持 `en` 和 `zh`,默认为 `en`。
134
-
135
- #### 返回值
136
-
137
- 生成的 Release Note。
138
-
139
- #### 默认实现
140
-
141
- Modern.js 的默认实现为:
142
-
143
- ```ts
144
- export function getReleaseNoteLine(
145
- commit: Commit,
146
- lang: 'en' | 'zh' = 'en',
147
- ) {
148
- const { repository, pullRequestId, summary, summary_zh, author } = commit;
149
- const pullRequest =
150
- pullRequestId && repository
151
- ? `https://github.com/${repository}/pull/${pullRequestId}`
152
- : '';
153
- if (lang === 'en') {
154
- return `- ${summary}${author ? ` by @${author}` : ''}${
155
- pullRequest ? ` in ${pullRequest}` : ''
156
- }\n`;
157
- }
158
- return `- ${summary_zh}${author ? ` 由 @${author} 实现` : ''}${
159
- pullRequest ? `, 详情可查看 ${pullRequest}` : ''
160
- }\n`;
161
- }
162
- ```
163
-
164
- ## 使用自定义模块
165
-
166
- `gen-release-note` 命令支持 `--custom` 参数,该参数可传入自定义 Release Note 模块的模块名称或者路径。
167
-
168
- ### 配置相对路径
169
-
170
- custom 参数值如果为相对路径为**项目跟目录**。
171
-
172
- 例如创建 `scripts/my-release-note-config.js` 文件,定义如下内容:
173
-
174
- ```ts title="scripts/my-release-note-config.js"
175
- function getReleaseInfo(commit, commitObj) {
176
- return commitObj;
177
- }
178
-
179
- function getReleaseNoteLine(commit) {}
180
-
181
- module.exports = {
182
- getReleaseInfo,
183
- getReleaseNoteLine,
184
- };
185
- ```
186
-
187
- 执行下面命令:
188
-
189
- ```bash
190
- pnpm run gen-release-note --custom ./scripts/my-release-note-config.js
191
- ```
192
-
193
- 也可以把命令参数直接定义到 `package.json` 中:
194
-
195
- ```json title="package.json"
196
- {
197
- "scripts": {
198
- ...
199
- "gen-release-note": "modern gen-release-note --custom ./scripts/my-release-note-config.js"
200
- },
201
- ...
202
- }
203
- ```
204
-
205
- 直接执行命令 `pnpm run gen-release-note` 即可。
206
-
207
- ### 使用 Modern.js Module
208
-
209
- custom 参数值还可以使用 Modern.js Module 进行管理,提供通用方案。
210
-
211
- #### 使用 `npx @modern-js/create@latest` 创建 Modern.js Module
212
-
213
- ```md
214
- ? 请选择你想创建的工程类型:Npm 模块
215
- ? 请填写项目名称:custom-release-note
216
- ? 请选择开发语言:TS
217
- ? 请选择包管理工具:pnpm
218
- ```
219
-
220
- #### 实现自定义内容
221
-
222
- ```ts title="src/index.ts"
223
- export function getReleaseInfo() {}
224
-
225
- export function getReleaseNoteLine() {}
226
- ```
227
-
228
- #### 将模块发布到 NPM
229
- #### 在目标仓库根目录安装对应模块,例如 `custom-release-note`
230
- #### 执行 gen-release-note 命令添加 custom 参数
231
-
232
- ```bash
233
- pnpm run gen-release-note --custom custom-release-note
234
- ```
235
-
236
- ### 使用 Monorepo 工程方案
237
-
238
- 如果你当前仓库为 Monorepo 工程方案,可以直接使用模块子项目进行管理。
239
-
240
- #### 执行 `pnpm run new` 创建模块子项目
241
-
242
- ```md
243
- ? 请选择你想创建的工程类型:Npm 模块
244
- ? 请填写子项目名称:custom-release-note
245
- ? 请填写子项目目录名称:custom-release-note
246
- ? 请选择开发语言:TS
247
- ```
248
-
249
- #### 实现自定义内容
250
-
251
- ```ts title="src/index.ts"
252
- export function getReleaseInfo() {}
253
-
254
- export function getReleaseNoteLine() {}
255
- ```
256
-
257
- #### 在 Monorepo 根目录添加子项目模块依赖,例如 `custom-release-note`。
258
-
259
- ```json title="package.json"
260
- {
261
- "devDependencies": {
262
- "custom-release-note": "workspace:*",
263
- ...
264
- }
265
- }
266
- ```
267
-
268
- #### 执行 `gen-release-note` 命令添加 `--custom` 参数
269
-
270
- ```bash
271
- pnpm run gen-release-note --custom custom-release-note
272
- ```
273
-
274
- 该模块发布到 NPM 后,依然可以和模块类型一样供其他仓库使用。
@@ -1,50 +0,0 @@
1
- ---
2
- sidebar_position: 4
3
- ---
4
-
5
- # 发布预发布版本
6
-
7
- 在发布正式版本之前,我们也需要发布预发布版本供内部测试和用户使用,changesets 也支持发布预发布版本。
8
-
9
- ## 步骤
10
-
11
- :::info
12
- 以下示例命令都以 pnpm 作为包管理工具进行,如果需要使用其他包管理工具,请按需求进行替换。
13
-
14
- :::
15
-
16
- #### 执行 bump 命令升级预发布版本版本号
17
-
18
- ```bash
19
- pnpm run bump --canary --preid <preid>
20
- ```
21
-
22
- `preid` 为预发布版本标记,例如 `alpha`、`beta` 等,默认值为 `next`。
23
-
24
- 使用 `--canary` 参数后,`bump` 命令由以下三个步骤完成:
25
-
26
- - `changeset pre enter <preid>` 进入预发布模式。
27
-
28
- - `changeset version` 升级版本号。
29
-
30
- - `changeset pre exit` 退出预发布模式。
31
-
32
- #### 检查相关变更并提交
33
-
34
- 检查相关版本号变更是否正确,并提交变更。
35
-
36
- 建议预发布操作不在主分支上进行,不合入主分支,当预发布验证完成后,直接基于主分支发布正式版本。
37
-
38
- #### 执行 release 命令发布预发布版本
39
-
40
- ```bash
41
- pnpm run release --tag <tag>
42
- ```
43
-
44
- 发布预发布版本一定要使用 `--tag` 参数,参数值最好和 `preid` 值相同,方便用户使用。
45
-
46
- ## 注意事项
47
-
48
- ### 退出预发布模式
49
-
50
- 在进入预发布模式后,changesets 会自动在 `.changeset` 目录创建 `pre.json` 文件用于记录当时进入预发布模式的一些状态信息,当出现状态信息和当前仓库状态不一致时,可直接删除该文件退出预发布模式。
@@ -1,231 +0,0 @@
1
- ---
2
- sidebar_position: 3
3
- ---
4
-
5
- # 发布正式版本
6
-
7
- 发版正式版本时,我们需要根据开发过程中生成的 changesets 进行相关包版本号升级,并执行 publish 命令发布到 NPM 上。
8
-
9
- ## 步骤
10
-
11
- :::info
12
- 以下示例命令都以 pnpm 作为包管理工具进行,如果需要使用其他包管理工具,请按需求进行替换。
13
-
14
- :::
15
-
16
- ### Modern.js Module
17
-
18
- #### 在根目录执行 bump 命令
19
-
20
- ```bash
21
- pnpm run bump
22
- ```
23
-
24
- ![执行 bump 命令](https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/changeset-module-bump.png)
25
-
26
- 执行该命令时,changeset 会自动进行以下操作:
27
-
28
- - 删除 `.changesets` 目录下的所有 changeset 文件。
29
-
30
- - 根据 changeset 信息升级该包版本号。
31
-
32
- - 在根目录的 `CHANGELOG.md` 文件中写入 changelog 信息,文件不存在时会自动创建。
33
-
34
- #### 确认并提交当前变更
35
-
36
- ```bash
37
- git add .
38
- git commit -m "release: bump package"
39
- ```
40
-
41
- #### 在根目录执行以下命令发布包至 NPM
42
-
43
- ```bash
44
- pnpm run release
45
- ```
46
-
47
- ![执行 release 命令](https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/changeset-module-release.png)
48
-
49
- #### push 对应的 tag 信息至远程仓库
50
-
51
- ```bash
52
- git push --follow-tags
53
- ```
54
-
55
- ### Monorepo 工程方案
56
-
57
- #### 在根目录执行 bump 命令
58
-
59
- ```bash
60
- pnpm run bump
61
- ```
62
-
63
- ![执行 bump 命令](https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/changeset-monorepo-bump.png)
64
-
65
- 执行该命令时,changesets 会自动进行以下操作:
66
-
67
- - 删除 `.changesets` 目录下的所有 changeset 文件。
68
-
69
- - 根据 changeset 信息升级相关包的版本号,除了显示写入 changeset 的包,执行命令时还会将 Monorepo 中所有的包进行依赖关系分析,如果需要升级,也会对应的自动升级版本号。
70
-
71
- - 在需要升级的包目录的 `CHANGELOG.md` 文件中写入 Changelog 信息,文件不存在时会自动创建。
72
-
73
- #### 确认并提交当前变更
74
-
75
- :::info
76
- 需确认自动升级的版本号是否符合预期,如果需要了解版本升级策略,请查看[升级版本策略](/guides/topic-detail/changesets/release#升级版本策略)。
77
-
78
- :::
79
-
80
- ```bash
81
- git add .
82
- git commit -m "release: bump package"
83
- ```
84
-
85
- #### 在根目录执行以下命令发布包至 NPM
86
-
87
- ```bash
88
- pnpm run release
89
- ```
90
-
91
- 执行该命令时,将会依次判断 Monorepo 中所有的 packages 的版本是否在 NPM 中存在,如果不存在将会执行 `publish` 命令发布。
92
-
93
- :::warning
94
- 当 Monorepo 中包之间依赖关系使用 workspace 声明时,注意不要直接在 package 对应的子目录直接执行 `npm publish` 发布 package,使用 `release` 命令在发布时将会自动去除 workspace 声明,确保 NPM 包发布之后可用。
95
-
96
- :::
97
-
98
- #### push 对应的 tag 信息至远程仓库
99
-
100
- ```bash
101
- git push --follow-tags
102
- ```
103
-
104
- ## 参数
105
-
106
- ### bump 命令参数
107
-
108
- - `--snapshot`:生成基于时间戳的版本号。
109
-
110
- ```bash
111
- pnpm run bump --snapshot canary
112
- ```
113
-
114
- 执行完成后,对应的升级版本号将会变成 `0.0.0-canary-20220622092823` 的形式,其中 canary 为 snapshot 配置的标记,如果不配置,将直接生成 `0.0.0-20220622092823` 的形式。
115
-
116
- 该参数主要用于发布临时测试版本进行测试,不需要进行代码提交。
117
-
118
- - `--ignore`:发布时手动忽略部分包。
119
-
120
- 例如本次发布你需要忽略 `module-2` 包:
121
-
122
- ```bash
123
- pnpm run bump --ignore module-2
124
- ```
125
-
126
- 命令执行完成后,将会忽略 `module-2` 包的更新。注意如果存在包依赖 `module-2`,需要将对应包也加入到 `ignore` 参数中,否则 `bump` 命令将执行失败。
127
-
128
- 加入多个包的使用姿势为:
129
-
130
- ```bash
131
- pnpm run bump --ignore module-2 --ignore module-3
132
- ```
133
-
134
- ### release 命令参数
135
-
136
- - `--otp`:使用 `npm token` 发布包。
137
-
138
- ```bash
139
- pnpm run relese --otp <token>
140
- ```
141
-
142
- - `--tag`:发布使用特定的 tag,默认使用 `latest`
143
-
144
- ```bash
145
- pnpm run release --tag <tag>
146
- ```
147
-
148
- - `--ignore-scripts`:发布时忽略 npm scripts。
149
-
150
- 执行 `publish` 命令时,npm 会自动触发很多命令,比如 `prepare`、`prepublish`,使用该参数可以忽略这些命令执行。该参数仅支持在使用 pnpm 的 Monorepo 中使用。
151
-
152
- ```bash
153
- pnpm run release --ignore-scripts
154
- ```
155
-
156
- - `--no-git-checks`:发布时忽略检查当前分支。
157
-
158
- 执行发布命令时,默认会自动检查当前分支是否为发布分支,是否存在未提交变更等等,使用该参数可以忽略 git 相关检查。
159
-
160
- ```bash
161
- pnpm run release --no-git-checks
162
- ```
163
-
164
- ## 升级版本策略
165
-
166
- ### dependencies 或者 devDependencies 依赖
167
-
168
- - patch 版本依赖只升级自身
169
-
170
- 例如存在如下场景:
171
-
172
- Monorepo 中存在两个包,`module-1` 和 `module-2`,`module-2` 的 `dependencies` 中存在 `module-1`。
173
-
174
- 当前存在的 changeset 为 `module-1` 的 `patch` 版本升级。
175
-
176
- 执行 bump 命令后将只会升级 `module-1` 的 patch 版本号。
177
-
178
- - major / minor 版本自身升级 major 或者 minor 版本号,依赖包升级 patch 版本号
179
-
180
- 例如存在如下场景:
181
-
182
- Monorepo 中存在两个包,`module-1` 和 `module-2`,`module-2` 的 dependencies 中存在`module-1`。
183
-
184
- 当前存在的 changeset 为 `module-1` 的 minor 版本升级。
185
-
186
- 执行 bump 命令后 `module-1` 会升级 `minor` 版本号,`module -2` 会升级 `patch` 版本号。
187
-
188
- ### peerDependencies 依赖
189
-
190
- - patch 版本依赖自身和依赖包都升级 patch 版本号
191
-
192
- 例如存在如下场景:
193
-
194
- Monorepo 中存在两个包,`module-1` 和 `module-2`,`module-2` 的 `peerDependencies` 中存在 `module-1`。
195
-
196
- 当前存在的 changeset 为 `module-1` 的 patch 版本升级。
197
-
198
- 执行 bump 命令后将 `module-1` 和 `module-2` 都升级 patch 版本号。
199
-
200
- - major / minor 版本自身升级 major 或者 minor 版本号,依赖包升级 major 版本号
201
-
202
- 例如存在如下场景:
203
-
204
- Monorepo 中存在两个包,`module-1` 和 `module-2`,`module-2` 的 `peerDependencies` 中存在 `module-1`。
205
-
206
- 当前存在的 changeset 为 `module-1` 的 `minor` 版本升级。
207
-
208
- 执行 bump 命令后将 module-1 将升级 `minor` 版本号, `module-2` 升级 `major` 版本号。
209
-
210
- - 修改 peerDependencies 的升级策略
211
-
212
- `peerDependencies` 的升级策略支持通过配置 `onlyUpdatePeerDependentsWhenOutOfRange` 来修改依赖升级策略,当只有超出声明的版本类型范围时,才对应升级 `peerDependencies`。
213
-
214
- ```json
215
- {
216
- "___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": {
217
- "onlyUpdatePeerDependentsWhenOutOfRange": true
218
- },
219
- ...
220
- }
221
- ```
222
-
223
- 例如存在如下场景:
224
-
225
- Monorepo 中存在两个包,`module-1` 和 `module-2`,`module-2` 的 `peerDependencies` 中存在 `module-1`,声明 `module-1` 的版本号使用 `^`。
226
-
227
- 当前存在的 changeset 为 `module-1` 的 `patch` 或者 `minor` 版本升级。
228
-
229
- 执行 `bump` 命令后只升级 `module-1` 版本号。
230
-
231
- 需注意,如果包版本号在 `0.x.x` 的范围时,`minor` 版本号升级也是超出声明的版本类型范围的。
@@ -1,45 +0,0 @@
1
- ---
2
- sidebar_position: 9
3
- title: 测试 Model
4
- ---
5
- # 测试 Model
6
-
7
- 好的测试对代码的稳健性至关重要。下面以 [快速上手](/guides/topic-detail/model/quick-start) 的 `countModel` 为例,演示在 Modern.js 中,如何对 Model 进行单元测试。
8
-
9
- 使用测试功能,需要先开启该功能。在项目根目录下,执行 `pnpm run new`,进行如下选择:
10
-
11
- ```bash
12
- ? 请选择你想要的操作 启用可选功能
13
- ? 请选择功能名称 启用「单元测试 / 集成测试」功能
14
- ```
15
-
16
- 即可开启测试功能支持。
17
-
18
- 新增 `count.test.ts` 文件,代码如下:
19
-
20
- ```ts
21
- import { createStore } from '@modern-js/runtime/testing';
22
- import countModel from './count';
23
-
24
- describe('test model', () => {
25
- it('count value should plus one after add', () => {
26
- const store = createStore();
27
- const [state, { add }] = store.use(countModel);
28
-
29
- expect(state).toEqual({ value: 1 });
30
-
31
- add();
32
-
33
- expect(store.use(countModel)[0]).toEqual({ value: 2 });
34
- });
35
- });
36
- ```
37
-
38
- :::info
39
- 这里使用的 [`createStore`](/apis/app/runtime/model/create-store) 是从 `@modern-js/runtime/testing` 导入的,内部会使用 [`runtime.state`](/configure/app/runtime/state) 的配置去创建 `store`。
40
-
41
- :::
42
-
43
- 在测试用例里,我们新建一个 `store` 来挂载 `countModel`,通过 `store.use` 获取 `countModel` 的 State 和 Actions。然后调用 `add` Action 更新状态,并断言更新后的状态值。
44
-
45
- 执行 `pnpm run test` 命令,触发测试用例的执行。
@@ -1,4 +0,0 @@
1
- {
2
- "label": "Monorepo",
3
- "position": 4
4
- }
@@ -1,53 +0,0 @@
1
- ---
2
- sidebar_position: 2
3
- ---
4
-
5
- # 创建子项目
6
-
7
- 本章将要介绍如何在 Monorepo 工程下创建子项目。
8
-
9
- > Modern.js 支持使用 pnpm 和 Yarn 的 Monorepo,这里以使用 pnpm 为例。以下命令可以以同样方式使用 Yarn 来执行。
10
-
11
- Modern.js 针对 Monorepo 工程提供了生成器功能,它用于在 Monorepo 工程下创建不同类型的 Monorepo 子项目。在生成器中提供以下类型子项目的创建:
12
-
13
- - 「应用」类型
14
- - 「模块」类型
15
-
16
- 要启动 Monorepo 的生成器功能,可以在 Monorepo 工程根目录下执行命令:
17
-
18
- ```
19
- pnpm run new
20
- ```
21
-
22
- :::info 补充信息
23
- 使用 Yarn 的方式:`yarn new`
24
-
25
- :::
26
-
27
- 执行成功后,可以看到如下内容:
28
-
29
- ```
30
- ? 请选择你想创建的工程类型 (Use arrow keys)
31
- ❯ Web 应用
32
- Npm 模块
33
- ```
34
-
35
- 然后根据不同的需求选择对应的类型项目选项,选择之后便开始出现对应子项目类型的问题和选项。例如选择「应用」后会出现:
36
-
37
- ```
38
- ? 请选择你想创建的工程类型:Web应用
39
- ? 请填写子项目名称
40
- ```
41
-
42
- 当完成所有生成器问题之后,便开始进行项目的创建和项目依赖的下载。当创建成功之后,可以看到类似以下内容:
43
-
44
- ```
45
- [INFO] 依赖自动安装成功
46
- [INFO] 创建成功!
47
- 可在新项目的目录下运行以下命令:
48
- pnpm run dev # 启动开发服务器
49
- pnpm run build # 构建生产环境产物
50
- pnpm run serve # 启动生产环境服务
51
- pnpm run lint # 运行 ESLint 并自动修复问题
52
- pnpm run new # 启用可选功能或创建项目要素
53
- ```
@@ -1,14 +0,0 @@
1
- ---
2
- sidebar_position: 1
3
- ---
4
-
5
- # Monorepo 工程介绍
6
-
7
- Modern.js 提供了对于 Monorepo 工程方案的支持,其主要通过 `@modern-js/monorepo-tools` 来提供功能。
8
-
9
- 该专题将从以下方面来讲解如何使用 Modern.js 对 Monorepo 进行管理:
10
-
11
- - 在 Monorepo 中创建子项目
12
- - Monorepo 下子项目之间的联调开发
13
- - 发布 Monorepo 的子项目
14
- - 部署 Monorepo 子项目