@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.
- 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",
|