@modern-js/main-doc 2.51.0 → 2.53.0

Sign up to get free protection for your applications and to get access to all the features.
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 子项目