@modern-js/main-doc 2.22.0 → 2.22.1
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.
- package/CHANGELOG.md +24 -0
- package/docs/en/components/debug-app.mdx +1 -1
- package/docs/en/components/deploy.mdx +1 -0
- package/docs/en/components/entry-mode.mdx +0 -0
- package/docs/en/components/init-app.mdx +3 -7
- package/docs/en/components/release-note.mdx +1 -0
- package/docs/en/configure/app/output/css-modules.mdx +13 -0
- package/docs/en/configure/app/tools/swc.mdx +2 -16
- package/docs/en/guides/advanced-features/rspack-start.mdx +1 -2
- package/docs/en/guides/concept/builder.mdx +15 -15
- package/docs/en/guides/concept/entries.mdx +47 -46
- package/docs/en/guides/get-started/glossary.mdx +12 -12
- package/docs/en/guides/get-started/introduction.mdx +17 -20
- package/docs/en/guides/get-started/quick-start.mdx +21 -37
- package/docs/en/guides/get-started/upgrade.mdx +15 -13
- package/docs/en/guides/topic-detail/changesets/_category_.json +4 -0
- package/docs/en/guides/topic-detail/changesets/add.mdx +125 -0
- package/docs/en/guides/topic-detail/changesets/changelog.mdx +238 -0
- package/docs/en/guides/topic-detail/changesets/commit.mdx +269 -0
- package/docs/en/guides/topic-detail/changesets/config.mdx +147 -0
- package/docs/en/guides/topic-detail/changesets/github.mdx +175 -0
- package/docs/en/guides/topic-detail/changesets/introduce.mdx +56 -0
- package/docs/en/guides/topic-detail/changesets/release-note.mdx +273 -0
- package/docs/en/guides/topic-detail/changesets/release-pre.mdx +49 -0
- package/docs/en/guides/topic-detail/changesets/release.mdx +229 -0
- package/docs/en/guides/troubleshooting/builder.mdx +8 -0
- package/docs/zh/community/blog/v2-release-note.mdx +1 -1
- package/docs/zh/community/contributing-guide.mdx +1 -1
- package/docs/zh/components/entry-mode.mdx +0 -0
- package/docs/zh/components/init-app.mdx +5 -9
- package/docs/zh/configure/app/output/css-modules.mdx +13 -0
- package/docs/zh/configure/app/tools/swc.mdx +2 -16
- package/docs/zh/guides/advanced-features/rspack-start.mdx +1 -2
- package/docs/zh/guides/concept/builder.mdx +1 -1
- package/docs/zh/guides/concept/entries.mdx +18 -14
- package/docs/zh/guides/get-started/quick-start.mdx +7 -10
- package/docs/zh/guides/get-started/upgrade.mdx +1 -1
- package/docs/zh/guides/topic-detail/changesets/add.mdx +15 -13
- package/docs/zh/guides/topic-detail/changesets/changelog.mdx +20 -20
- package/docs/zh/guides/topic-detail/changesets/commit.mdx +12 -14
- package/docs/zh/guides/topic-detail/changesets/config.mdx +5 -5
- package/docs/zh/guides/topic-detail/changesets/github.mdx +38 -27
- package/docs/zh/guides/topic-detail/changesets/introduce.mdx +12 -12
- package/docs/zh/guides/topic-detail/changesets/release-note.mdx +84 -70
- package/docs/zh/guides/topic-detail/changesets/release-pre.mdx +9 -9
- package/docs/zh/guides/topic-detail/changesets/release.mdx +29 -29
- package/docs/zh/guides/troubleshooting/builder.mdx +8 -0
- package/package.json +5 -5
@@ -4,7 +4,7 @@ sidebar_position: 1
|
|
4
4
|
|
5
5
|
# 认识 Changesets
|
6
6
|
|
7
|
-
Modern.js 默认集成了 [
|
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
|
15
|
+
- 在发布版本时,会根据 changeset 内容自动升级对应包的版本号,并在对应的包中生成 changelog 信息。
|
16
16
|
|
17
|
-
- 在 Monorepo
|
17
|
+
- 在 Monorepo 项目中,changeset 会自动生成仓库依赖图,升级时只会升级变更包及相关依赖包的版本号。
|
18
18
|
|
19
19
|
## 初始化
|
20
20
|
|
21
|
-
Modern.js 默认创建的模块和 Monorepo 工程方案项目已经初始化完成
|
21
|
+
Modern.js 默认创建的模块和 Monorepo 工程方案项目已经初始化完成 changesets,在项目根目录会自动创建 `.changeset` 目录,及 `.changeset/config.json` 的配置文件。
|
22
22
|
|
23
|
-
并且,Modern.js 在其对应的工程方案工具 `@modern-js/module-tools` 和 `@modern-js/monorepo-tools` 提供了
|
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
|
-
配置文件提供了生成
|
40
|
+
配置文件提供了生成 changesets 的一些基本配置,字段详细介绍请参考 [Changesets 配置文件](/guides/topic-detail/changesets/config)。
|
41
41
|
|
42
42
|
## 命令
|
43
43
|
|
44
|
-
- `change
|
44
|
+
- `change`: 创建一个 changeset,执行完成该命令后会自动在 `.changeset` 目录生成一个 changeset 文件。
|
45
45
|
|
46
|
-
- `bump
|
46
|
+
- `bump`: 根据当前 changeset 升级对应包版本号。
|
47
47
|
|
48
|
-
- `pre
|
48
|
+
- `pre`: 标记进入和退出 pre-release 模式,在 pre release 模式下执行 `bump` 命令,将会生成 `x.x.x-${pre-tag}.x` 的版本号格式。
|
49
49
|
|
50
|
-
- `release
|
50
|
+
- `release`: 发布包到 NPM。
|
51
51
|
|
52
|
-
- `status
|
52
|
+
- `status`: 查看当前 changeset 状态。
|
53
53
|
|
54
|
-
- `gen-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
|
-
|
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
|
-
###
|
25
|
+
### getReleaseInfo
|
22
26
|
|
23
27
|
生成 Release Note 信息需要先收集一些信息,比如 commit ID、Pull Request ID、commit message 等等。
|
24
28
|
|
25
29
|
该逻辑可通过 `getReleaseInfo` 函数实现。
|
26
30
|
|
27
|
-
####
|
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--%
|
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:
|
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
|
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,
|
69
|
-
|
70
|
-
|
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
|
-
|
117
|
+
#### getReleaseNoteLine
|
85
118
|
|
86
119
|
根据 `getReleaseInfo` 中获取的 commit 对象信息,生成对应的 Release Note。
|
87
120
|
|
88
121
|
该逻辑可通过 `getReleaseNoteLine` 函数实现。
|
89
122
|
|
90
|
-
####
|
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
|
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
|
-
|
146
|
+
lang: 'en' | 'zh' = 'en',
|
131
147
|
) {
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
if (
|
138
|
-
return `-
|
139
|
-
|
140
|
-
|
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
|
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` 参数,该参数可传入自定义
|
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 --
|
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
|
-
|
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
|
-
|
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
|
-
|
215
|
-
|
216
|
-
|
228
|
+
#### 将模块发布到 NPM
|
229
|
+
#### 在目标仓库根目录安装对应模块,例如 `custom-release-note`
|
230
|
+
#### 执行 gen-release-note 命令添加 custom 参数
|
217
231
|
|
218
232
|
```bash
|
219
|
-
pnpm run gen-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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
267
|
+
#### 执行 `gen-release-note` 命令添加 `--custom` 参数
|
254
268
|
|
255
269
|
```bash
|
256
|
-
pnpm run gen-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
|
-
在发布正式版本之前,我们也需要发布预发布版本供内部测试和用户使用,
|
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 --
|
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 --
|
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
|
-
在进入预发布模式后,
|
50
|
+
在进入预发布模式后,changesets 会自动在 `.changeset` 目录创建 `pre.json` 文件用于记录当时进入预发布模式的一些状态信息,当出现状态信息和当前仓库状态不一致时,可直接删除该文件退出预发布模式。
|
@@ -4,7 +4,7 @@ sidebar_position: 3
|
|
4
4
|
|
5
5
|
# 发布正式版本
|
6
6
|
|
7
|
-
发版正式版本时,我们需要根据开发过程中生成的
|
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` 文件中写入
|
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
|

|
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
|

|
64
64
|
|
65
|
-
执行该命令时,
|
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 --
|
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 --
|
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 --
|
131
|
+
pnpm run bump --ignore module-2 --ignore module-3
|
132
132
|
```
|
133
133
|
|
134
134
|
### release 命令参数
|
135
135
|
|
136
|
-
- `--otp
|
136
|
+
- `--otp`:使用 `npm token` 发布包。
|
137
137
|
|
138
138
|
```bash
|
139
|
-
pnpm run relese --
|
139
|
+
pnpm run relese --otp <token>
|
140
140
|
```
|
141
141
|
|
142
|
-
- `--tag
|
142
|
+
- `--tag`:发布使用特定的 tag,默认使用 `latest`
|
143
143
|
|
144
144
|
```bash
|
145
|
-
pnpm run release --
|
145
|
+
pnpm run release --tag <tag>
|
146
146
|
```
|
147
147
|
|
148
|
-
- `--ignore-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 --
|
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 --
|
161
|
+
pnpm run release --no-git-checks
|
162
162
|
```
|
163
163
|
|
164
164
|
## 升级版本策略
|
165
165
|
|
166
166
|
### dependencies 或者 devDependencies 依赖
|
167
167
|
|
168
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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.
|
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.
|
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.
|
37
|
-
"@modern-js/doc-tools": "2.22.
|
38
|
-
"@modern-js/doc-plugin-auto-sidebar": "2.22.
|
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",
|