@modern-js/main-doc 2.22.0 → 2.22.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/docs/en/components/debug-app.mdx +1 -1
  3. package/docs/en/components/deploy.mdx +1 -0
  4. package/docs/en/components/entry-mode.mdx +0 -0
  5. package/docs/en/components/init-app.mdx +3 -7
  6. package/docs/en/components/release-note.mdx +1 -0
  7. package/docs/en/configure/app/output/css-modules.mdx +13 -0
  8. package/docs/en/configure/app/tools/swc.mdx +2 -16
  9. package/docs/en/guides/advanced-features/rspack-start.mdx +1 -2
  10. package/docs/en/guides/concept/builder.mdx +15 -15
  11. package/docs/en/guides/concept/entries.mdx +47 -46
  12. package/docs/en/guides/get-started/glossary.mdx +12 -12
  13. package/docs/en/guides/get-started/introduction.mdx +17 -20
  14. package/docs/en/guides/get-started/quick-start.mdx +21 -37
  15. package/docs/en/guides/get-started/upgrade.mdx +15 -13
  16. package/docs/en/guides/topic-detail/changesets/_category_.json +4 -0
  17. package/docs/en/guides/topic-detail/changesets/add.mdx +125 -0
  18. package/docs/en/guides/topic-detail/changesets/changelog.mdx +238 -0
  19. package/docs/en/guides/topic-detail/changesets/commit.mdx +269 -0
  20. package/docs/en/guides/topic-detail/changesets/config.mdx +147 -0
  21. package/docs/en/guides/topic-detail/changesets/github.mdx +175 -0
  22. package/docs/en/guides/topic-detail/changesets/introduce.mdx +56 -0
  23. package/docs/en/guides/topic-detail/changesets/release-note.mdx +273 -0
  24. package/docs/en/guides/topic-detail/changesets/release-pre.mdx +49 -0
  25. package/docs/en/guides/topic-detail/changesets/release.mdx +229 -0
  26. package/docs/en/guides/troubleshooting/builder.mdx +8 -0
  27. package/docs/zh/community/blog/v2-release-note.mdx +1 -1
  28. package/docs/zh/community/contributing-guide.mdx +1 -1
  29. package/docs/zh/components/entry-mode.mdx +0 -0
  30. package/docs/zh/components/init-app.mdx +5 -9
  31. package/docs/zh/configure/app/output/css-modules.mdx +13 -0
  32. package/docs/zh/configure/app/tools/swc.mdx +2 -16
  33. package/docs/zh/guides/advanced-features/rspack-start.mdx +1 -2
  34. package/docs/zh/guides/concept/builder.mdx +1 -1
  35. package/docs/zh/guides/concept/entries.mdx +18 -14
  36. package/docs/zh/guides/get-started/quick-start.mdx +7 -10
  37. package/docs/zh/guides/get-started/upgrade.mdx +1 -1
  38. package/docs/zh/guides/topic-detail/changesets/add.mdx +15 -13
  39. package/docs/zh/guides/topic-detail/changesets/changelog.mdx +20 -20
  40. package/docs/zh/guides/topic-detail/changesets/commit.mdx +12 -14
  41. package/docs/zh/guides/topic-detail/changesets/config.mdx +5 -5
  42. package/docs/zh/guides/topic-detail/changesets/github.mdx +38 -27
  43. package/docs/zh/guides/topic-detail/changesets/introduce.mdx +12 -12
  44. package/docs/zh/guides/topic-detail/changesets/release-note.mdx +84 -70
  45. package/docs/zh/guides/topic-detail/changesets/release-pre.mdx +9 -9
  46. package/docs/zh/guides/topic-detail/changesets/release.mdx +29 -29
  47. package/docs/zh/guides/troubleshooting/builder.mdx +8 -0
  48. package/package.json +5 -5
@@ -4,7 +4,7 @@ sidebar_position: 1
4
4
 
5
5
  # 认识 Changesets
6
6
 
7
- Modern.js 默认集成了 [Changesets](https://github.com/changesets/changesets) 用于模块和 Monorepo 工程方案项目中的包版本管理。
7
+ Modern.js 默认集成了 [changesets](https://github.com/changesets/changesets) 用于模块和 Monorepo 工程方案的包版本管理。
8
8
 
9
9
  ## 特点
10
10
 
@@ -12,15 +12,15 @@ Changesets 具有以下几个特点:
12
12
 
13
13
  - 在开发时,需要开发者提供本次变更涉及的包名称、升级版本类型(`pathch`、`minor`、`major`)及变更信息,即 changeset。
14
14
 
15
- - 在发布版本时,会根据 changeset 自动升级对应包的版本号,并在对应的包中生成 Changelog 信息。
15
+ - 在发布版本时,会根据 changeset 内容自动升级对应包的版本号,并在对应的包中生成 changelog 信息。
16
16
 
17
- - 在 Monorepo 场景中,changeset 会自动生成仓库依赖图,升级时只会升级变更包及相关依赖包的版本号。
17
+ - 在 Monorepo 项目中,changeset 会自动生成仓库依赖图,升级时只会升级变更包及相关依赖包的版本号。
18
18
 
19
19
  ## 初始化
20
20
 
21
- Modern.js 默认创建的模块和 Monorepo 工程方案项目已经初始化完成 Changesets,在项目根目录会自动创建 `.changeset` 目录,及 `.changeset/config.json` 的配置文件。
21
+ Modern.js 默认创建的模块和 Monorepo 工程方案项目已经初始化完成 changesets,在项目根目录会自动创建 `.changeset` 目录,及 `.changeset/config.json` 的配置文件。
22
22
 
23
- 并且,Modern.js 在其对应的工程方案工具 `@modern-js/module-tools` 和 `@modern-js/monorepo-tools` 提供了 Changesets 相应的命令,无需再手动安装 Changesets 相关依赖。
23
+ 并且,Modern.js 在其对应的工程方案工具 `@modern-js/module-tools` 和 `@modern-js/monorepo-tools` 提供了 changesets 相应的命令,无需再手动安装 changesets 相关依赖。
24
24
 
25
25
  Changesets 默认配置如下:
26
26
 
@@ -37,20 +37,20 @@ Changesets 默认配置如下:
37
37
  }
38
38
  ```
39
39
 
40
- 配置文件提供了生成 Changesets 的一些基本配置,字段详细介绍请参考后续章节: [Changesets 配置文件](/guides/topic-detail/changesets/config)。
40
+ 配置文件提供了生成 changesets 的一些基本配置,字段详细介绍请参考 [Changesets 配置文件](/guides/topic-detail/changesets/config)。
41
41
 
42
42
  ## 命令
43
43
 
44
- - `change` 创建一个 changeset,执行完成该命令后会自动在 `.changeset` 目录生成一个 changeset 文件。
44
+ - `change`: 创建一个 changeset,执行完成该命令后会自动在 `.changeset` 目录生成一个 changeset 文件。
45
45
 
46
- - `bump` 根据当前 changeset 升级对应包版本号。
46
+ - `bump`: 根据当前 changeset 升级对应包版本号。
47
47
 
48
- - `pre` 标记进入和退出 `pre release` 模式,在 `pre release` 模式下执行 `bump` 命令,将会生成 `x.x.x-${pre-tag}.x` 的版本号格式。
48
+ - `pre`: 标记进入和退出 pre-release 模式,在 pre release 模式下执行 `bump` 命令,将会生成 `x.x.x-${pre-tag}.x` 的版本号格式。
49
49
 
50
- - `release` 发布包到 NPM。
50
+ - `release`: 发布包到 NPM。
51
51
 
52
- - `status` 查看当前 changeset 状态。
52
+ - `status`: 查看当前 changeset 状态。
53
53
 
54
- - `gen-release-note` 根据当前的 chagneset 状态生成 Release Note 信息。
54
+ - `gen-release-note`: 根据当前的 chagneset 状态生成 Release Note 信息。
55
55
 
56
56
  具体命令支持的参数可以查看后续对应章节介绍。
@@ -9,24 +9,26 @@ Modern.js 提供了 `modern gen-release-note` 命令,支持通过当前存在
9
9
  默认生成的 Release Note 格式为:
10
10
 
11
11
  ```markdown
12
- [[#1220](https://github.com/web-infra-dev/modern.js/pull/1220)] feat: support bff operators -- Ming
12
+ - fix: add missing type definitions by @zllkjc in https://github.com/web-infra-dev/modern.js/pull/3835
13
13
  ```
14
14
 
15
15
  根据 commit 信息获取 changeset 的 Pull Request ID,并生成 Github 的链接,内容为 changeset 的 changelog 信息和作者信息。
16
16
 
17
+ :::info
18
+ 获取作者信息,需要提供 Github Token 环境变量,通过 GITHUB_AUTH_TOKEN 传入。
19
+ :::
20
+
17
21
  当默认生成 Release Note 逻辑不能满足需求时,支持自定义 Release Note 格式。
18
22
 
19
23
  ## 信息
20
24
 
21
- ### 自定义 Release Note 所需信息
25
+ ### getReleaseInfo
22
26
 
23
27
  生成 Release Note 信息需要先收集一些信息,比如 commit ID、Pull Request ID、commit message 等等。
24
28
 
25
29
  该逻辑可通过 `getReleaseInfo` 函数实现。
26
30
 
27
- #### getReleaseInfo
28
-
29
- ##### Params
31
+ #### Params
30
32
 
31
33
  - commit
32
34
 
@@ -34,40 +36,71 @@ Modern.js 提供了 `modern gen-release-note` 命令,支持通过当前存在
34
36
 
35
37
  当前 changeset 对应的 commit message 信息。
36
38
 
37
- 执行 `git log --pretty=format:%h--%s--%an .changeset/${changeset.id}.md` 的结果。
39
+ 执行 `git log --pretty=format:%h--%s--%ae .changeset/${changeset.id}.md` 的结果。
38
40
 
39
41
  - commitObj
40
42
 
41
43
  初步解析 commit 获取基本信息。
42
44
 
43
45
  ```ts
46
+ export enum CommitType {
47
+ Performance = 'performance',
48
+ Features = 'features',
49
+ BugFix = 'bugFix',
50
+ Doc = 'doc',
51
+ Other = 'other',
52
+ }
53
+
44
54
  interface Commit {
45
55
  id: string; // commit id
46
- type: 'feature' | 'fix'; // commit 类型,默认通过开头字符串如果为 fix,类型为 fix,其他为 feature
56
+ type: CommitType;
47
57
  repository?: string; // 参数传入的 repo 信息或者 package.json 中定义的 repository 信息
48
58
  pullRequestId?: string;
49
59
  author?: string;
50
60
  message: string; // commit message
51
61
  summary: string; // changeset summary
62
+ summary_zh: string; // changeset zh summary
52
63
  [key: string]: string | undefined;
53
64
  }
54
65
  ```
55
66
 
56
- ##### 返回值
67
+ #### 返回值
57
68
 
58
69
  commitObj, 补充后完整的 commit 对象。
59
70
 
60
- ##### 默认实现
71
+ #### 默认实现
61
72
 
62
- Modern.js 的默认实现为:根据 commit 信息拆分出 Pull Request ID 和作者,加入到 commitObj 中。
73
+ Modern.js 的默认实现为:根据 commit 信息拆分出 Pull Request ID,并根据 commit id 获取到用户信息,加入到 commitObj 中。
63
74
 
64
75
  ```ts
65
76
  function getReleaseInfo(commit: string, commitObj: Commit) {
66
77
  const commitRegex = /(.*)\(#(\d*)\)/;
67
78
 
68
- const [, message, author] = commit.split('--');
69
-
70
- commitObj.author = author;
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
+ }
71
104
 
72
105
  if ((message || commitObj.summary).match(commitRegex)) {
73
106
  const [, messageShort, pullRequestId] = (
@@ -81,75 +114,56 @@ function getReleaseInfo(commit: string, commitObj: Commit) {
81
114
  }
82
115
  ```
83
116
 
84
- ### 使用获取的信息生成 Release Note
117
+ #### getReleaseNoteLine
85
118
 
86
119
  根据 `getReleaseInfo` 中获取的 commit 对象信息,生成对应的 Release Note。
87
120
 
88
121
  该逻辑可通过 `getReleaseNoteLine` 函数实现。
89
122
 
90
- #### getReleaseNoteLine
91
-
92
- ##### Params
123
+ #### Params
93
124
 
94
125
  - commit
95
126
 
96
127
  类型和上述 commitObj 类型一致。
97
128
 
98
- ##### 返回值
129
+ - lang
130
+
131
+ 类型: string;
132
+
133
+ 获取对应语言的 Release Note 信息,支持 `en` 和 `zh`,默认为 `en`。
134
+
135
+ #### 返回值
99
136
 
100
137
  生成的 Release Note。
101
138
 
102
- ##### 默认实现
139
+ #### 默认实现
103
140
 
104
141
  Modern.js 的默认实现为:
105
142
 
106
143
  ```ts
107
- function formatSummary(summary: string, pullRequestId?: string) {
108
- const [firstLine, ...futureLines] = summary
109
- .split('\n')
110
- .map(l => l.trimRight());
111
-
112
- let returnVal = firstLine;
113
-
114
- if (futureLines.length > 0) {
115
- if (pullRequestId) {
116
- returnVal = `\n\n ${returnVal}`;
117
- } else {
118
- returnVal = `\n ${returnVal}`;
119
- }
120
- returnVal += `\n\n ${futureLines
121
- .filter(l => Boolean(l))
122
- .map(l => l)
123
- .join('\n\n')}`;
124
- }
125
- return returnVal;
126
- }
127
-
128
- export async function getReleaseNoteLine(
144
+ export function getReleaseNoteLine(
129
145
  commit: Commit,
130
- customReleaseNoteFunction?: CustomReleaseNoteFunction,
146
+ lang: 'en' | 'zh' = 'en',
131
147
  ) {
132
- if (customReleaseNoteFunction?.getReleaseNoteLine) {
133
- return customReleaseNoteFunction.getReleaseNoteLine(commit);
134
- }
135
-
136
- const { repository, pullRequestId, summary } = commit;
137
- if (pullRequestId && repository) {
138
- return `- [#${pullRequestId}](https://github.com/${repository}/pull/${pullRequestId}) ${formatSummary(
139
- summary,
140
- pullRequestId,
141
- )}\n`;
142
- }
143
- if (pullRequestId) {
144
- return `#${pullRequestId} ${formatSummary(summary, pullRequestId)}\n`;
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`;
145
157
  }
146
- return `${formatSummary(summary, pullRequestId)}\n`;
158
+ return `- ${summary_zh}${author ? ` 由 @${author} 实现` : ''}${
159
+ pullRequest ? `, 详情可查看 ${pullRequest}` : ''
160
+ }\n`;
147
161
  }
148
162
  ```
149
163
 
150
164
  ## 使用自定义模块
151
165
 
152
- `gen-release-note` 命令支持 `--custom` 参数,该参数可传入自定义 release note 模块的模块名称或者路径。
166
+ `gen-release-note` 命令支持 `--custom` 参数,该参数可传入自定义 Release Note 模块的模块名称或者路径。
153
167
 
154
168
  ### 配置相对路径
155
169
 
@@ -173,10 +187,10 @@ module.exports = {
173
187
  执行下面命令:
174
188
 
175
189
  ```bash
176
- pnpm run gen-release-note -- --custom ./scripts/my-release-note-config.js
190
+ pnpm run gen-release-note --custom ./scripts/my-release-note-config.js
177
191
  ```
178
192
 
179
- 也可以把命令参数直接定义到 package.json 中:
193
+ 也可以把命令参数直接定义到 `package.json` 中:
180
194
 
181
195
  ```json title="package.json"
182
196
  {
@@ -194,7 +208,7 @@ pnpm run gen-release-note -- --custom ./scripts/my-release-note-config.js
194
208
 
195
209
  custom 参数值还可以使用模块工程方案进行管理,提供通用方案。
196
210
 
197
- 1. 使用 npx @modern-js/create@latest 创建模块工程方案。
211
+ #### 使用 `npx @modern-js/create@latest` 创建模块工程方案
198
212
 
199
213
  ```md
200
214
  ? 请选择你想创建的工程类型:Npm 模块
@@ -203,7 +217,7 @@ custom 参数值还可以使用模块工程方案进行管理,提供通用方
203
217
  ? 请选择包管理工具:pnpm
204
218
  ```
205
219
 
206
- 2. 实现自定义内容。
220
+ #### 实现自定义内容
207
221
 
208
222
  ```ts title="src/index.ts"
209
223
  export function getReleaseInfo() {}
@@ -211,19 +225,19 @@ export function getReleaseInfo() {}
211
225
  export function getReleaseNoteLine() {}
212
226
  ```
213
227
 
214
- 3. 将模块发布到 NPM
215
- 4. 在目标仓库根目录安装对应模块,例如 `custom-release-note`。
216
- 5. 执行 gen-release-note 命令添加 custom 参数
228
+ #### 将模块发布到 NPM
229
+ #### 在目标仓库根目录安装对应模块,例如 `custom-release-note`
230
+ #### 执行 gen-release-note 命令添加 custom 参数
217
231
 
218
232
  ```bash
219
- pnpm run gen-release-note -- --custom custom-release-note
233
+ pnpm run gen-release-note --custom custom-release-note
220
234
  ```
221
235
 
222
236
  ### 使用 Monorepo 工程方案
223
237
 
224
238
  如果你当前仓库为 Monorepo 工程方案,可以直接使用模块子项目进行管理。
225
239
 
226
- 1. 执行 `pnpm run new` 创建模块子项目
240
+ #### 执行 `pnpm run new` 创建模块子项目
227
241
 
228
242
  ```md
229
243
  ? 请选择你想创建的工程类型:Npm 模块
@@ -232,7 +246,7 @@ pnpm run gen-release-note -- --custom custom-release-note
232
246
  ? 请选择开发语言:TS
233
247
  ```
234
248
 
235
- 2. 实现自定义内容。
249
+ #### 实现自定义内容
236
250
 
237
251
  ```ts title="src/index.ts"
238
252
  export function getReleaseInfo() {}
@@ -240,7 +254,7 @@ export function getReleaseInfo() {}
240
254
  export function getReleaseNoteLine() {}
241
255
  ```
242
256
 
243
- 3. 在 Monorepo 根目录添加子项目模块依赖,例如 `custom-release-note`。
257
+ #### 在 Monorepo 根目录添加子项目模块依赖,例如 `custom-release-note`。
244
258
 
245
259
  ```json title="package.json"
246
260
  {
@@ -250,10 +264,10 @@ export function getReleaseNoteLine() {}
250
264
  }
251
265
  ```
252
266
 
253
- 4. 执行 `gen-release-note` 命令添加 `--custom` 参数
267
+ #### 执行 `gen-release-note` 命令添加 `--custom` 参数
254
268
 
255
269
  ```bash
256
- pnpm run gen-release-note -- --custom custom-release-note
270
+ pnpm run gen-release-note --custom custom-release-note
257
271
  ```
258
272
 
259
273
  该模块发布到 NPM 后,依然可以和模块类型一样供其他仓库使用。
@@ -4,7 +4,7 @@ sidebar_position: 4
4
4
 
5
5
  # 发布预发布版本
6
6
 
7
- 在发布正式版本之前,我们也需要发布预发布版本供内部测试和用户使用,Changesets 也支持发布预发布版本。
7
+ 在发布正式版本之前,我们也需要发布预发布版本供内部测试和用户使用,changesets 也支持发布预发布版本。
8
8
 
9
9
  ## 步骤
10
10
 
@@ -13,21 +13,21 @@ sidebar_position: 4
13
13
 
14
14
  :::
15
15
 
16
- #### 执行以下命令升级预发布版本版本号:
16
+ #### 执行 bump 命令升级预发布版本版本号
17
17
 
18
18
  ```bash
19
- pnpm run bump -- --canary --preid <preid>
19
+ pnpm run bump --canary --preid <preid>
20
20
  ```
21
21
 
22
22
  `preid` 为预发布版本标记,例如 `alpha`、`beta` 等,默认值为 `next`。
23
23
 
24
24
  使用 `--canary` 参数后,`bump` 命令由以下三个步骤完成:
25
25
 
26
- - `changeset pre enter <preid>` 进入预发布模式
26
+ - `changeset pre enter <preid>` 进入预发布模式。
27
27
 
28
- - `changeset version` 升级版本号
28
+ - `changeset version` 升级版本号。
29
29
 
30
- - `changeset pre exit` 退出预发布模式
30
+ - `changeset pre exit` 退出预发布模式。
31
31
 
32
32
  #### 检查相关变更并提交
33
33
 
@@ -35,10 +35,10 @@ pnpm run bump -- --canary --preid <preid>
35
35
 
36
36
  建议预发布操作不在主分支上进行,不合入主分支,当预发布验证完成后,直接基于主分支发布正式版本。
37
37
 
38
- #### 执行以下命令发布预发布版本:
38
+ #### 执行 release 命令发布预发布版本
39
39
 
40
40
  ```bash
41
- pnpm run release -- --tag <tag>
41
+ pnpm run release --tag <tag>
42
42
  ```
43
43
 
44
44
  发布预发布版本一定要使用 `--tag` 参数,参数值最好和 `preid` 值相同,方便用户使用。
@@ -47,4 +47,4 @@ pnpm run release -- --tag <tag>
47
47
 
48
48
  ### 退出预发布模式
49
49
 
50
- 在进入预发布模式后,Changesets 会自动在 `.changeset` 目录创建 `pre.json` 文件用于记录当时进入预发布模式的一些状态信息,当出现状态信息和当前仓库状态不一致时,可直接删除该文件退出预发布模式。
50
+ 在进入预发布模式后,changesets 会自动在 `.changeset` 目录创建 `pre.json` 文件用于记录当时进入预发布模式的一些状态信息,当出现状态信息和当前仓库状态不一致时,可直接删除该文件退出预发布模式。
@@ -4,7 +4,7 @@ sidebar_position: 3
4
4
 
5
5
  # 发布正式版本
6
6
 
7
- 发版正式版本时,我们需要根据开发过程中生成的 changeset 进行相关包版本号升级,并执行 publish 命令发布到 NPM 上。
7
+ 发版正式版本时,我们需要根据开发过程中生成的 changesets 进行相关包版本号升级,并执行 publish 命令发布到 NPM 上。
8
8
 
9
9
  ## 步骤
10
10
 
@@ -15,7 +15,7 @@ sidebar_position: 3
15
15
 
16
16
  ### 模块工程方案
17
17
 
18
- #### 在根目录执行以下命令:
18
+ #### 在根目录执行 bump 命令
19
19
 
20
20
  ```bash
21
21
  pnpm run bump
@@ -29,16 +29,16 @@ pnpm run bump
29
29
 
30
30
  - 根据 changeset 信息升级该包版本号。
31
31
 
32
- - 在根目录的 `CHANGELOG.md` 文件中写入 Changelog 信息,文件不存在时会自动创建。
32
+ - 在根目录的 `CHANGELOG.md` 文件中写入 changelog 信息,文件不存在时会自动创建。
33
33
 
34
- #### 确认并提交当前变更:
34
+ #### 确认并提交当前变更
35
35
 
36
36
  ```bash
37
37
  git add .
38
38
  git commit -m "release: bump package"
39
39
  ```
40
40
 
41
- #### 在根目录执行以下命令发布包至 NPM
41
+ #### 在根目录执行以下命令发布包至 NPM
42
42
 
43
43
  ```bash
44
44
  pnpm run release
@@ -46,7 +46,7 @@ pnpm run release
46
46
 
47
47
  ![执行 release 命令](https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/changeset-module-release.png)
48
48
 
49
- #### push 对应的 tag 信息至远程仓库:
49
+ #### push 对应的 tag 信息至远程仓库
50
50
 
51
51
  ```bash
52
52
  git push --follow-tags
@@ -54,7 +54,7 @@ git push --follow-tags
54
54
 
55
55
  ### Monorepo 工程方案
56
56
 
57
- #### 在根目录执行以下命令:
57
+ #### 在根目录执行 bump 命令
58
58
 
59
59
  ```bash
60
60
  pnpm run bump
@@ -62,7 +62,7 @@ pnpm run bump
62
62
 
63
63
  ![执行 bump 命令](https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/changeset-monorepo-bump.png)
64
64
 
65
- 执行该命令时,changeset 会自动进行以下操作:
65
+ 执行该命令时,changesets 会自动进行以下操作:
66
66
 
67
67
  - 删除 `.changesets` 目录下的所有 changeset 文件。
68
68
 
@@ -70,7 +70,7 @@ pnpm run bump
70
70
 
71
71
  - 在需要升级的包目录的 `CHANGELOG.md` 文件中写入 Changelog 信息,文件不存在时会自动创建。
72
72
 
73
- #### 确认并提交当前变更:
73
+ #### 确认并提交当前变更
74
74
 
75
75
  :::info
76
76
  需确认自动升级的版本号是否符合预期,如果需要了解版本升级策略,请查看[升级版本策略](/guides/topic-detail/changesets/release#升级版本策略)。
@@ -82,7 +82,7 @@ git add .
82
82
  git commit -m "release: bump package"
83
83
  ```
84
84
 
85
- #### 在根目录执行以下命令发布包至 NPM
85
+ #### 在根目录执行以下命令发布包至 NPM
86
86
 
87
87
  ```bash
88
88
  pnpm run release
@@ -95,7 +95,7 @@ pnpm run release
95
95
 
96
96
  :::
97
97
 
98
- #### push 对应的 tag 信息至远程仓库:
98
+ #### push 对应的 tag 信息至远程仓库
99
99
 
100
100
  ```bash
101
101
  git push --follow-tags
@@ -105,22 +105,22 @@ git push --follow-tags
105
105
 
106
106
  ### bump 命令参数
107
107
 
108
- - `--snapshot` 生成基于时间戳的版本号。
108
+ - `--snapshot`:生成基于时间戳的版本号。
109
109
 
110
110
  ```bash
111
- pnpm run bump -- --snapshot canary
111
+ pnpm run bump --snapshot canary
112
112
  ```
113
113
 
114
114
  执行完成后,对应的升级版本号将会变成 `0.0.0-canary-20220622092823` 的形式,其中 canary 为 snapshot 配置的标记,如果不配置,将直接生成 `0.0.0-20220622092823` 的形式。
115
115
 
116
116
  该参数主要用于发布临时测试版本进行测试,不需要进行代码提交。
117
117
 
118
- - `--ignore` 发布时手动忽略部分包。
118
+ - `--ignore`:发布时手动忽略部分包。
119
119
 
120
120
  例如本次发布你需要忽略 `module-2` 包:
121
121
 
122
122
  ```bash
123
- pnpm run bump -- --ignore module-2
123
+ pnpm run bump --ignore module-2
124
124
  ```
125
125
 
126
126
  命令执行完成后,将会忽略 `module-2` 包的更新。注意如果存在包依赖 `module-2`,需要将对应包也加入到 `ignore` 参数中,否则 `bump` 命令将执行失败。
@@ -128,44 +128,44 @@ pnpm run bump -- --ignore module-2
128
128
  加入多个包的使用姿势为:
129
129
 
130
130
  ```bash
131
- pnpm run bump -- --ignore module-2 --ignore module-3
131
+ pnpm run bump --ignore module-2 --ignore module-3
132
132
  ```
133
133
 
134
134
  ### release 命令参数
135
135
 
136
- - `--otp` 使用 `npm token` 执行 release 命令发布对应包
136
+ - `--otp`:使用 `npm token` 发布包。
137
137
 
138
138
  ```bash
139
- pnpm run relese -- --otp <token>
139
+ pnpm run relese --otp <token>
140
140
  ```
141
141
 
142
- - `--tag` 本地发布使用特定的 tag,默认使用 `latest`
142
+ - `--tag`:发布使用特定的 tag,默认使用 `latest`
143
143
 
144
144
  ```bash
145
- pnpm run release -- --tag <tag>
145
+ pnpm run release --tag <tag>
146
146
  ```
147
147
 
148
- - `--ignore-scripts` 发布时忽略 npm scripts。
148
+ - `--ignore-scripts`:发布时忽略 npm scripts。
149
149
 
150
150
  执行 `publish` 命令时,npm 会自动触发很多命令,比如 `prepare`、`prepublish`,使用该参数可以忽略这些命令执行。该参数仅支持在使用 pnpm 的 Monorepo 中使用。
151
151
 
152
152
  ```bash
153
- pnpm run release -- --ignore-scripts
153
+ pnpm run release --ignore-scripts
154
154
  ```
155
155
 
156
- - `--no-git-checks` 发布时忽略检查当前分支。
156
+ - `--no-git-checks`:发布时忽略检查当前分支。
157
157
 
158
158
  执行发布命令时,默认会自动检查当前分支是否为发布分支,是否存在未提交变更等等,使用该参数可以忽略 git 相关检查。
159
159
 
160
160
  ```bash
161
- pnpm run release -- --no-git-checks
161
+ pnpm run release --no-git-checks
162
162
  ```
163
163
 
164
164
  ## 升级版本策略
165
165
 
166
166
  ### dependencies 或者 devDependencies 依赖
167
167
 
168
- #### patch 版本依赖只升级自身
168
+ - patch 版本依赖只升级自身
169
169
 
170
170
  例如存在如下场景:
171
171
 
@@ -175,7 +175,7 @@ Monorepo 中存在两个包,`module-1` 和 `module-2`,`module-2` 的 `depend
175
175
 
176
176
  执行 bump 命令后将只会升级 `module-1` 的 patch 版本号。
177
177
 
178
- #### major / minor 版本自身升级 major 或者 minor 版本号,依赖包升级 patch 版本号
178
+ - major / minor 版本自身升级 major 或者 minor 版本号,依赖包升级 patch 版本号
179
179
 
180
180
  例如存在如下场景:
181
181
 
@@ -187,7 +187,7 @@ Monorepo 中存在两个包,`module-1` 和 `module-2`,`module-2` 的 depende
187
187
 
188
188
  ### peerDependencies 依赖
189
189
 
190
- #### patch 版本依赖自身和依赖包都升级 patch 版本号
190
+ - patch 版本依赖自身和依赖包都升级 patch 版本号
191
191
 
192
192
  例如存在如下场景:
193
193
 
@@ -197,7 +197,7 @@ Monorepo 中存在两个包,`module-1` 和 `module-2`,`module-2` 的 `peerDe
197
197
 
198
198
  执行 bump 命令后将 `module-1` 和 `module-2` 都升级 patch 版本号。
199
199
 
200
- #### major / minor 版本自身升级 major 或者 minor 版本号,依赖包升级 major 版本号
200
+ - major / minor 版本自身升级 major 或者 minor 版本号,依赖包升级 major 版本号
201
201
 
202
202
  例如存在如下场景:
203
203
 
@@ -207,7 +207,7 @@ Monorepo 中存在两个包,`module-1` 和 `module-2`,`module-2` 的 `peerDe
207
207
 
208
208
  执行 bump 命令后将 module-1 将升级 `minor` 版本号, `module-2` 升级 `major` 版本号。
209
209
 
210
- #### 修改 peerDependencies 的升级策略
210
+ - 修改 peerDependencies 的升级策略
211
211
 
212
212
  `peerDependencies` 的升级策略支持通过配置 `onlyUpdatePeerDependentsWhenOutOfRange` 来修改依赖升级策略,当只有超出声明的版本类型范围时,才对应升级 `peerDependencies`。
213
213
 
@@ -29,3 +29,11 @@ sidebar_position: 3
29
29
  - webpack 编译出现 'compilation' argument 报错?
30
30
  - 编译时报错 `You may need additional loader`?
31
31
  - 打开页面后报错,提示 `exports is not defined`?
32
+
33
+ ## 热更新问题
34
+
35
+ 请参考 [「Modern.js Builder - 热更新问题」](https://modernjs.dev/builder/guide/faq/hmr.html),比如:
36
+
37
+ - 打包时 external React 后,热更新不生效?
38
+ - 开发环境设置文件名的 hash 后,热更新不生效?
39
+ - React 组件的热更新无法生效?
package/package.json CHANGED
@@ -15,13 +15,13 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "2.22.0",
18
+ "version": "2.22.1",
19
19
  "publishConfig": {
20
20
  "registry": "https://registry.npmjs.org/",
21
21
  "access": "public"
22
22
  },
23
23
  "peerDependencies": {
24
- "@modern-js/builder-doc": "^2.22.0"
24
+ "@modern-js/builder-doc": "^2.22.1"
25
25
  },
26
26
  "devDependencies": {
27
27
  "classnames": "^2",
@@ -33,9 +33,9 @@
33
33
  "fs-extra": "^10",
34
34
  "@types/node": "^16",
35
35
  "@types/fs-extra": "^9",
36
- "@modern-js/builder-doc": "2.22.0",
37
- "@modern-js/doc-tools": "2.22.0",
38
- "@modern-js/doc-plugin-auto-sidebar": "2.22.0"
36
+ "@modern-js/builder-doc": "2.22.1",
37
+ "@modern-js/doc-tools": "2.22.1",
38
+ "@modern-js/doc-plugin-auto-sidebar": "2.22.1"
39
39
  },
40
40
  "scripts": {
41
41
  "dev": "modern dev",