@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
@@ -30,7 +30,7 @@ Modern.js 初始化的项目是单入口的(SPA),项目结构如下:
|
|
30
30
|
└── tsconfig.json
|
31
31
|
```
|
32
32
|
|
33
|
-
在 Modern.js 项目中,你可以很方便的将单入口切换成多入口,直接在项目下执行 `pnpm run new
|
33
|
+
在 Modern.js 项目中,你可以很方便的将单入口切换成多入口,直接在项目下执行 `pnpm run new`,根据提示创建入口即可:
|
34
34
|
|
35
35
|
```bash
|
36
36
|
? 请选择你想要的操作 创建工程元素
|
@@ -54,34 +54,38 @@ Modern.js 初始化的项目是单入口的(SPA),项目结构如下:
|
|
54
54
|
└── page.tsx
|
55
55
|
```
|
56
56
|
|
57
|
-
|
57
|
+
原本的入口代码被移动到了和 `package.json` 中 `name` 同名的目录下,并创建了 `new-entry` 入口目录。
|
58
58
|
|
59
59
|
执行 `pnpm run dev` 后,可以看到新增了一条名为 `/new-entry` 的路由,并且被迁移的代码路由并未发生变化。
|
60
60
|
|
61
61
|
:::tip
|
62
|
-
Modern.js 会将与 package.json 文件中 `name` 字段同名的入口作为主入口,主入口的路由为 `/`,其他入口的路由为 `/{entryName}`。
|
62
|
+
Modern.js 会将与 `package.json` 文件中 `name` 字段同名的入口作为主入口,主入口的路由为 `/`,其他入口的路由为 `/{entryName}`。
|
63
63
|
|
64
|
-
|
64
|
+
比如,`package.json` 中的 `name` 为 `myapp` 时,`src/myapp` 会作为项目的主入口。
|
65
65
|
|
66
66
|
:::
|
67
67
|
|
68
68
|
## 入口类型
|
69
69
|
|
70
|
-
|
70
|
+
不同的入口类型具有不同的编译和运行时行为。
|
71
|
+
|
72
|
+
import EntryMode from '@site-docs/components/entry-mode.mdx';
|
73
|
+
|
74
|
+
<EntryMode />
|
71
75
|
|
72
76
|
默认情况下,Modern.js 启动项目前会对 `src/` 下的文件进行扫描,识别入口,并生成对应的服务端路由。
|
73
77
|
|
74
78
|
:::tip
|
75
|
-
可以通过 [source.entriesDir](/configure/app/source/entries-dir)
|
79
|
+
可以通过 [source.entriesDir](/configure/app/source/entries-dir) 修改页面的入口识别目录。
|
76
80
|
|
77
81
|
:::
|
78
82
|
|
79
83
|
并非 `src/` 下所有的一级目录都会成为项目入口, 入口所在目录必须满足以下四个条件之一:
|
80
84
|
|
81
|
-
1. 具有 `routes/`
|
82
|
-
2. 具有 `App.[jt]sx?`
|
83
|
-
3. 具有 `index.[jt]sx?`
|
84
|
-
4. 具有 `pages/` 目录(兼容 Modern.js 1.0
|
85
|
+
1. 具有 `routes/` 目录。
|
86
|
+
2. 具有 `App.[jt]sx?` 文件。
|
87
|
+
3. 具有 `index.[jt]sx?` 文件。
|
88
|
+
4. 具有 `pages/` 目录(兼容 Modern.js 1.0)。
|
85
89
|
|
86
90
|
当 `src/` 目录满足入口特征时,Modern.js 会认为当前项目为单入口应用。
|
87
91
|
|
@@ -94,7 +98,7 @@ Modern.js 会将与 package.json 文件中 `name` 字段同名的入口作为主
|
|
94
98
|
|
95
99
|
### 框架模式入口
|
96
100
|
|
97
|
-
框架模式指需要使用 Modern.js 框架能力,例如 Router、SSR、一体化调用等。这类入口约定下,开发者定义的入口并不是真正的
|
101
|
+
框架模式指需要使用 Modern.js 框架能力,例如 Router、SSR、一体化调用等。这类入口约定下,开发者定义的入口并不是真正的 webpack 编译入口。Modern.js 在启动时会生成一个封装过的入口,可以在 `node_modules/.modern/{entryName}/index.js` 找到真正的入口。
|
98
102
|
|
99
103
|
#### 约定式路由
|
100
104
|
|
@@ -135,7 +139,7 @@ export default () => {
|
|
135
139
|
|
136
140
|
#### 自定义 Bootstrap
|
137
141
|
|
138
|
-
如果入口中存在 `index.[jt]sx` 文件,并且当文件默认导出函数时,Modern.js 会将默认的 bootstrap 函数作为入参传入,并用导出的函数替代默认的 bootstrap
|
142
|
+
如果入口中存在 `index.[jt]sx` 文件,并且当文件默认导出函数时,Modern.js 会将默认的 `bootstrap` 函数作为入参传入,并用导出的函数替代默认的 `bootstrap`,这样开发者可以自定义将组件挂载到 DOM 节点上,或在挂载前添加自定义行为。例如:
|
139
143
|
|
140
144
|
```tsx
|
141
145
|
export default (App: React.ComponentType, bootstrap: () => void) => {
|
@@ -178,9 +182,9 @@ export default AppWrapper;
|
|
178
182
|
|
179
183
|
### 构建模式入口
|
180
184
|
|
181
|
-
构建模式是指不使用任何 Modern.js 运行时的能力,完全由开发者自己定义项目
|
185
|
+
构建模式是指不使用任何 Modern.js 运行时的能力,完全由开发者自己定义项目 webpack 的入口。
|
182
186
|
|
183
|
-
如果入口中存在 `index.[jt]sx` ,并且没有默认导出函数时,这时候该文件就是真正的
|
187
|
+
如果入口中存在 `index.[jt]sx` ,并且没有默认导出函数时,这时候该文件就是真正的 webpack 入口文件。这里和 [Create React App](https://github.com/facebook/create-react-app) 类似,需要自己将组件挂载到 DOM 节点、添加热更新代码等。例如:
|
184
188
|
|
185
189
|
```js title=src/index.jsx
|
186
190
|
import React from 'react';
|
@@ -12,9 +12,9 @@ import Prerequisites from "@site-docs/components/prerequisites"
|
|
12
12
|
|
13
13
|
## 安装
|
14
14
|
|
15
|
-
Modern.js 提供了 `@modern-js/create`
|
15
|
+
Modern.js 提供了 `@modern-js/create` 工具来创建项目,不要全局安装,使用 `npx` 按需运行。
|
16
16
|
|
17
|
-
|
17
|
+
可以在已有的空目录来创建项目:
|
18
18
|
|
19
19
|
```bash
|
20
20
|
mkdir myapp && cd myapp
|
@@ -41,9 +41,9 @@ import DebugApp from "@site-docs/components/debug-app"
|
|
41
41
|
|
42
42
|
## 使用配置
|
43
43
|
|
44
|
-
|
44
|
+
通过 `@modern-js/create` 创建的 Modern.js 项目中,会默认生成 `modern.config.ts` 文件。
|
45
45
|
|
46
|
-
|
46
|
+
可以通过该配置文件修改配置,覆盖 Modern.js 的默认行为。例如添加如下配置,开启 SSR:
|
47
47
|
|
48
48
|
```ts title="modern.config.ts"
|
49
49
|
import appTools, { defineConfig } from '@modern-js/app-tools';
|
@@ -51,7 +51,6 @@ import appTools, { defineConfig } from '@modern-js/app-tools';
|
|
51
51
|
export default defineConfig({
|
52
52
|
runtime: {
|
53
53
|
router: true,
|
54
|
-
state: true,
|
55
54
|
},
|
56
55
|
server: {
|
57
56
|
ssr: true,
|
@@ -93,14 +92,12 @@ info File sizes after production build:
|
|
93
92
|
构建产物默认生成到 `dist/`,目录结构如下:
|
94
93
|
|
95
94
|
```
|
96
|
-
|
97
|
-
├── asset-manifest.json
|
95
|
+
dist
|
98
96
|
├── html
|
99
|
-
│
|
100
|
-
├── loader-routes
|
101
|
-
│ └── main
|
97
|
+
│ └── main
|
102
98
|
├── modern.config.json
|
103
99
|
├── route.json
|
100
|
+
├── routes-manifest.json
|
104
101
|
└── static
|
105
102
|
├── css
|
106
103
|
└── js
|
@@ -2,9 +2,9 @@
|
|
2
2
|
sidebar_position: 2
|
3
3
|
---
|
4
4
|
|
5
|
-
#
|
5
|
+
# 添加 Changesets
|
6
6
|
|
7
|
-
|
7
|
+
当我们开发完成时,需要添加一个 changeset 声明当前变更,用于后续版本发布。
|
8
8
|
|
9
9
|
## 信息
|
10
10
|
|
@@ -14,7 +14,7 @@ sidebar_position: 2
|
|
14
14
|
|
15
15
|
- 本次变更需要升级的版本号类型,类型符合 [semver](https://semver.org/) 规范。
|
16
16
|
|
17
|
-
- 本次变更的
|
17
|
+
- 本次变更的 changelog 信息。
|
18
18
|
|
19
19
|
## 步骤
|
20
20
|
|
@@ -25,17 +25,17 @@ sidebar_position: 2
|
|
25
25
|
|
26
26
|
### 模块工程方案
|
27
27
|
|
28
|
-
####
|
28
|
+
#### 在根目录执行 change 命令
|
29
29
|
|
30
30
|
```bash
|
31
31
|
pnpm run change
|
32
32
|
```
|
33
33
|
|
34
|
-
####
|
34
|
+
#### 选择本次变更需要升级的版本号类型
|
35
35
|
|
36
36
|

|
37
37
|
|
38
|
-
#### 填入
|
38
|
+
#### 填入 changelog 信息,并点击两次回车:
|
39
39
|
|
40
40
|

|
41
41
|
|
@@ -55,13 +55,13 @@ feat: test module solution changeset
|
|
55
55
|
|
56
56
|
我们假设 monorepo 中存在三个模块包,分别为 `module-1`,`module-2`,`module-3`。
|
57
57
|
|
58
|
-
####
|
58
|
+
#### 在根目录执行 change 命令
|
59
59
|
|
60
60
|
```bash
|
61
61
|
pnpm run change
|
62
62
|
```
|
63
63
|
|
64
|
-
####
|
64
|
+
#### 选择本次需要升级的包列表
|
65
65
|
|
66
66
|
Changesets 会根据当前代码变更(`git diff Head...baseBranch`),将 Monorepo 中的 package 分为两类,`changed packages` 和 `unchanged packages`,方便用户进行选择。
|
67
67
|
|
@@ -69,11 +69,13 @@ Changesets 会根据当前代码变更(`git diff Head...baseBranch`),将 Monor
|
|
69
69
|
|
70
70
|

|
71
71
|
|
72
|
-
####
|
72
|
+
#### 分别选择不同版本类型对应的包
|
73
|
+
|
74
|
+
changeset 会询问 `major` 和 `minor` 类型,如果存在包未选择这两种类型,将会默认使用 `patch` 类型。
|
73
75
|
|
74
76
|

|
75
77
|
|
76
|
-
#### 填入
|
78
|
+
#### 填入 changelog 信息
|
77
79
|
|
78
80
|

|
79
81
|
|
@@ -94,10 +96,10 @@ feat: test-changeset
|
|
94
96
|
|
95
97
|
change 命令支持以下参数:
|
96
98
|
|
97
|
-
- `--empty
|
99
|
+
- `--empty`: 添加一个空的 changeset。
|
98
100
|
|
99
101
|
```bash
|
100
|
-
pnpm run change --
|
102
|
+
pnpm run change --empty
|
101
103
|
```
|
102
104
|
|
103
105
|
执行完成后,将在项目的 `.changeset` 目录创建空的 changeset 文件,文件内容如下:
|
@@ -107,7 +109,7 @@ pnpm run change -- --empty
|
|
107
109
|
---
|
108
110
|
```
|
109
111
|
|
110
|
-
- `--open
|
112
|
+
- `--open`: 使用该参数时,在填写 changelog 步骤会打开系统默认编辑器进行填写。
|
111
113
|
|
112
114
|
## 注意事项
|
113
115
|
|
@@ -2,15 +2,15 @@
|
|
2
2
|
sidebar_position: 6
|
3
3
|
---
|
4
4
|
|
5
|
-
# 自定义
|
5
|
+
# 自定义 changelog 生成
|
6
6
|
|
7
|
-
Changesets 默认会使用 `@changesets/cli/changelog` 生成 Changelog 信息,如果默认的
|
7
|
+
Changesets 默认会使用 `@changesets/cli/changelog` 生成 Changelog 信息,如果默认的 changelog 信息不能满足需求,可以自定义 changelog 的生成。
|
8
8
|
|
9
|
-
## 自定义
|
9
|
+
## 自定义 changelog 内容
|
10
10
|
|
11
|
-
|
11
|
+
changelog 信息主要包含以下两种信息:
|
12
12
|
|
13
|
-
- changeset 中写入的
|
13
|
+
- changeset 中写入的 changelog 信息。
|
14
14
|
|
15
15
|
- 本次版本升级关联包的版本变更信息。
|
16
16
|
|
@@ -41,7 +41,7 @@ export type Changeset = {
|
|
41
41
|
|
42
42
|
#### 返回值
|
43
43
|
|
44
|
-
|
44
|
+
changelog 内容。
|
45
45
|
|
46
46
|
#### 默认实现
|
47
47
|
|
@@ -91,7 +91,7 @@ type DependenciesUpdated = ModCompWithPackage[];
|
|
91
91
|
|
92
92
|
#### 返回值
|
93
93
|
|
94
|
-
|
94
|
+
changelog 内容。
|
95
95
|
|
96
96
|
#### 默认实现
|
97
97
|
|
@@ -128,11 +128,11 @@ async function getDependencyReleaseLine(changesets, dependenciesUpdated) {
|
|
128
128
|
|
129
129
|
## 配置
|
130
130
|
|
131
|
-
Changesets 配置文件中 `changelog`
|
131
|
+
Changesets 配置文件中 `changelog` 字段用于标记 changelog 信息的获取途径。
|
132
132
|
|
133
|
-
该配置可以为字符串,直接声明获取
|
133
|
+
该配置可以为字符串,直接声明获取 changelog 信息模块的模块名称或者路径。
|
134
134
|
|
135
|
-
该配置还支持配置数组,数组中第一个元素为获取
|
135
|
+
该配置还支持配置数组,数组中第一个元素为获取 changelog 信息模块的模块名称或者路径,第二个元素为传入对应函数的参数值,会作为 `getReleaseLine` 和 `getDependencyReleaseLine` 函数的第三个参数传入。
|
136
136
|
|
137
137
|
### 配置相对路径
|
138
138
|
|
@@ -162,9 +162,9 @@ module.exports = {
|
|
162
162
|
|
163
163
|
### 使用模块工程方案
|
164
164
|
|
165
|
-
自定义
|
165
|
+
自定义 changelog 还可以使用模块工程方案进行管理,提供通用方案。
|
166
166
|
|
167
|
-
#### 使用 `npx @modern-js/create@latest`
|
167
|
+
#### 使用 `npx @modern-js/create@latest` 创建模块工程方案
|
168
168
|
|
169
169
|
```md
|
170
170
|
? 请选择你想创建的工程类型:Npm 模块
|
@@ -173,7 +173,7 @@ module.exports = {
|
|
173
173
|
? 请选择包管理工具:pnpm
|
174
174
|
```
|
175
175
|
|
176
|
-
####
|
176
|
+
#### 实现自定义内容
|
177
177
|
|
178
178
|
```ts title="src/index.ts"
|
179
179
|
export async function getReleaseLine() {}
|
@@ -181,11 +181,11 @@ export async function getReleaseLine() {}
|
|
181
181
|
export async function getDependencyReleaseLine() {}
|
182
182
|
```
|
183
183
|
|
184
|
-
#### 将模块发布到 NPM
|
184
|
+
#### 将模块发布到 NPM
|
185
185
|
|
186
|
-
#### 在目标仓库根目录安装对应模块,例如 `custom-changelog
|
186
|
+
#### 在目标仓库根目录安装对应模块,例如 `custom-changelog`
|
187
187
|
|
188
|
-
#### 配置 changeset 的 changelog
|
188
|
+
#### 配置 changeset 的 changelog 配置为包名称
|
189
189
|
|
190
190
|
```json title=".changesets/config.json"
|
191
191
|
{
|
@@ -198,7 +198,7 @@ export async function getDependencyReleaseLine() {}
|
|
198
198
|
|
199
199
|
如果你当前仓库为 Monorepo 工程方案,可以直接使用模块子项目进行管理。
|
200
200
|
|
201
|
-
#### 执行 `pnpm run new`
|
201
|
+
#### 执行 `pnpm run new` 创建模块子项目
|
202
202
|
|
203
203
|
```md
|
204
204
|
? 请选择你想创建的工程类型:Npm 模块
|
@@ -207,7 +207,7 @@ export async function getDependencyReleaseLine() {}
|
|
207
207
|
? 请选择开发语言:TS
|
208
208
|
```
|
209
209
|
|
210
|
-
####
|
210
|
+
#### 实现自定义内容
|
211
211
|
|
212
212
|
```ts title="src/index.ts"
|
213
213
|
export async function getReleaseLine() {}
|
@@ -215,7 +215,7 @@ export async function getReleaseLine() {}
|
|
215
215
|
export async function getDependencyReleaseLine() {}
|
216
216
|
```
|
217
217
|
|
218
|
-
#### 在 Monorepo 根目录添加子项目模块依赖,例如 `custom-changelog
|
218
|
+
#### 在 Monorepo 根目录添加子项目模块依赖,例如 `custom-changelog`
|
219
219
|
|
220
220
|
```json title="package.json"
|
221
221
|
{
|
@@ -226,7 +226,7 @@ export async function getDependencyReleaseLine() {}
|
|
226
226
|
}
|
227
227
|
```
|
228
228
|
|
229
|
-
#### 配置 changeset 的 changelog
|
229
|
+
#### 配置 changeset 的 changelog 配置为包名称
|
230
230
|
|
231
231
|
```json title=".changesets/config.json"
|
232
232
|
{
|
@@ -118,7 +118,7 @@ type ReleasePlan = {
|
|
118
118
|
|
119
119
|
- options
|
120
120
|
|
121
|
-
配置 commit
|
121
|
+
配置 commit 时的其他参数。
|
122
122
|
|
123
123
|
> commit 配置为数组时,第二个参数支持传入默认的配置信息,会对应的使用该参数传递。
|
124
124
|
|
@@ -169,7 +169,7 @@ Changesets 配置文件中 `commit` 字段,该字段用于标记是否需要
|
|
169
169
|
|
170
170
|
commit 配置如果为相对路径为 `.changesets` 目录下的相对路径。
|
171
171
|
|
172
|
-
例如创建
|
172
|
+
例如创建 `.changeset/my-commit-config.js` 文件,定义如下内容:
|
173
173
|
|
174
174
|
```js title=".changeset/my-commit-config.js"
|
175
175
|
async function getAddMessage(changeset, options) {}
|
@@ -195,9 +195,7 @@ commit 配置为 ./my-commit-config.js 即可:
|
|
195
195
|
|
196
196
|
自定义 commit 还可以使用模块工程方案进行管理,提供通用方案。
|
197
197
|
|
198
|
-
|
199
|
-
|
200
|
-
#### 使用 `npx @modern-js/create@latest` 创建模块工程方案。
|
198
|
+
#### 使用 `npx @modern-js/create@latest` 创建模块工程方案
|
201
199
|
|
202
200
|
```md
|
203
201
|
? 请选择你想创建的工程类型:Npm 模块
|
@@ -206,7 +204,7 @@ commit 配置为 ./my-commit-config.js 即可:
|
|
206
204
|
? 请选择包管理工具:pnpm
|
207
205
|
```
|
208
206
|
|
209
|
-
####
|
207
|
+
#### 实现自定义内容
|
210
208
|
|
211
209
|
```ts title="src/index.ts"
|
212
210
|
export async function getAddMessage() {}
|
@@ -214,15 +212,15 @@ export async function getAddMessage() {}
|
|
214
212
|
export async function getVersionMessage() {}
|
215
213
|
```
|
216
214
|
|
217
|
-
#### 将模块发布到 NPM
|
215
|
+
#### 将模块发布到 NPM
|
218
216
|
|
219
|
-
#### 在目标仓库根目录安装对应模块,例如 custom-commit
|
217
|
+
#### 在目标仓库根目录安装对应模块,例如 `custom-commit`
|
220
218
|
|
221
|
-
#### 配置 changeset 的 commit
|
219
|
+
#### 配置 changeset 的 commit 配置为包名称
|
222
220
|
|
223
221
|
```json title="package.json"
|
224
222
|
{
|
225
|
-
"
|
223
|
+
"commit": "custom-commit",
|
226
224
|
...
|
227
225
|
}
|
228
226
|
```
|
@@ -231,7 +229,7 @@ export async function getVersionMessage() {}
|
|
231
229
|
|
232
230
|
如果你当前仓库为 Monorepo 工程方案,可以直接使用模块子项目进行管理。
|
233
231
|
|
234
|
-
#### 执行 `pnpm run new`
|
232
|
+
#### 执行 `pnpm run new` 创建模块子项目
|
235
233
|
|
236
234
|
```md
|
237
235
|
? 请选择你想创建的工程类型:Npm 模块
|
@@ -240,7 +238,7 @@ export async function getVersionMessage() {}
|
|
240
238
|
? 请选择开发语言:TS
|
241
239
|
```
|
242
240
|
|
243
|
-
####
|
241
|
+
#### 实现自定义内容
|
244
242
|
|
245
243
|
```ts title="src/index.ts"
|
246
244
|
export async function getAddMessage() {}
|
@@ -248,7 +246,7 @@ export async function getAddMessage() {}
|
|
248
246
|
export async function getVersionMessage() {}
|
249
247
|
```
|
250
248
|
|
251
|
-
#### 在 Monorepo 根目录添加子项目模块依赖,例如 custom-commit
|
249
|
+
#### 在 Monorepo 根目录添加子项目模块依赖,例如 `custom-commit`
|
252
250
|
|
253
251
|
```json title="package.json"
|
254
252
|
{
|
@@ -259,7 +257,7 @@ export async function getVersionMessage() {}
|
|
259
257
|
}
|
260
258
|
```
|
261
259
|
|
262
|
-
#### 配置 changeset 的 commit
|
260
|
+
#### 配置 changeset 的 commit 配置为包名称
|
263
261
|
|
264
262
|
```json title=".changesets/config.json"
|
265
263
|
{
|
@@ -4,7 +4,7 @@ sidebar_position: 5
|
|
4
4
|
|
5
5
|
# Changesets 配置文件
|
6
6
|
|
7
|
-
我们前面了解到,初始化 Modern.js 仓库时,会默认初始化
|
7
|
+
我们前面了解到,初始化 Modern.js 仓库时,会默认初始化 changesets 的配置文件,即 `.changeset/config.json` 文件,下面我们将详细了解一下该文件中支持哪些配置。
|
8
8
|
|
9
9
|
## 配置介绍
|
10
10
|
|
@@ -106,15 +106,15 @@ pkg-b @ version 1.0.0
|
|
106
106
|
|
107
107
|
默认值:`@changesets/cli/changelog`
|
108
108
|
|
109
|
-
生成
|
109
|
+
生成 changelog 规则。
|
110
110
|
|
111
|
-
配置为 `false` 时,执行 bump 命令时,在 `CHANGELOG.md` 文件中只声明版本号,不声明其他
|
111
|
+
配置为 `false` 时,执行 bump 命令时,在 `CHANGELOG.md` 文件中只声明版本号,不声明其他 changelog 信息。
|
112
112
|
|
113
113
|

|
114
114
|
|
115
|
-
配置为 `@changesets/cli/changelog` 将使用官方提供的
|
115
|
+
配置为 `@changesets/cli/changelog` 将使用官方提供的 changlog 生成规则,将 changeset 信息转换为 changlog 内容。
|
116
116
|
|
117
|
-
配置为数组时,第一个参数为自定义 NPM 包或者路径,第二个参数为需要传入的默认参数配置,自定义格式我们将在后续[自定义
|
117
|
+
配置为数组时,第一个参数为自定义 NPM 包或者路径,第二个参数为需要传入的默认参数配置,自定义格式我们将在后续[自定义 changelog](/guides/topic-detail/changesets/changelog) 章节讲解。
|
118
118
|
|
119
119
|
### \_\_\_experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH
|
120
120
|
|
@@ -6,7 +6,7 @@ sidebar_position: 9
|
|
6
6
|
|
7
7
|
## BOT
|
8
8
|
|
9
|
-
在 Github 上,
|
9
|
+
在 Github 上,changesets 提供了机器人用于检测当前 Pull Request 是否存在 changeset,并提供了 UI 界面添加和修改 changeset。
|
10
10
|
|
11
11
|
### 安装
|
12
12
|
|
@@ -46,9 +46,9 @@ sidebar_position: 9
|
|
46
46
|
|
47
47
|
Modern.js 提供了自动创建发版 Pull Request 的 Github Action,提供基于选择的分支自动执行 bump 操作,更新 lock 文件及创建 Pull Request 操作。
|
48
48
|
|
49
|
-
|
49
|
+
#### 使用
|
50
50
|
|
51
|
-
在仓库中创建 `.github/workflows/release-pull-request.yml` 文件,填入以下内容:
|
51
|
+
- 在仓库中创建 `.github/workflows/release-pull-request.yml` 文件,填入以下内容:
|
52
52
|
|
53
53
|
```yaml
|
54
54
|
name: Release Pull Request
|
@@ -57,8 +57,15 @@ on:
|
|
57
57
|
workflow_dispatch:
|
58
58
|
inputs:
|
59
59
|
version:
|
60
|
-
|
60
|
+
type: choice
|
61
|
+
description: 'Release Type(canary, beta, alpha, latest)'
|
61
62
|
required: true
|
63
|
+
default: 'latest'
|
64
|
+
options:
|
65
|
+
- canary
|
66
|
+
- beta
|
67
|
+
- alpha
|
68
|
+
- latest
|
62
69
|
|
63
70
|
jobs:
|
64
71
|
release:
|
@@ -71,37 +78,40 @@ jobs:
|
|
71
78
|
# This makes Actions fetch only one branch to release
|
72
79
|
fetch-depth: 100
|
73
80
|
|
81
|
+
- ... # install dependencies and build repo package
|
74
82
|
- name: Create Release Pull Request
|
75
|
-
uses: web-infra-dev/actions@
|
83
|
+
uses: web-infra-dev/actions@v2
|
76
84
|
with:
|
77
|
-
|
78
|
-
versionNumber:
|
85
|
+
version: ${{ github.event.inputs.version }}
|
86
|
+
versionNumber: 'auto'
|
79
87
|
type: 'pull request'
|
88
|
+
tools: 'modern'
|
80
89
|
env:
|
81
|
-
GITHUB_TOKEN: ${{ secrets.
|
90
|
+
GITHUB_TOKEN: ${{ secrets.REPO_SCOPED_TOKEN }}
|
91
|
+
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
82
92
|
REPOSITORY: ${{ github.repository }}
|
83
93
|
REF: ${{ github.ref }}
|
84
94
|
```
|
85
95
|
|
86
|
-
将 Workflow 合并到主分支后,进入 Github 仓库对应的 Action 页面,选择 Release Pull Request:
|
96
|
+
- 将 Workflow 合并到主分支后,进入 Github 仓库对应的 Action 页面,选择 Release Pull Request:
|
87
97
|
|
88
98
|

|
89
99
|
|
90
|
-
|
100
|
+
- 选择本次发布类型,点击 Run workflow 按钮:
|
91
101
|
|
92
|
-

|
93
103
|
|
94
|
-
|
104
|
+
- Workflow 运行完成后将自动创建 `Release-${version}` 的 Pull Request,自动完成 `bump` changeset 相关版本号并更新 lock 文件,Pull Request 的内容为执行 `gen-release-note` 命令自动生成的 Release Note。
|
95
105
|
|
96
|
-

|
97
107
|
|
98
108
|
### 自动 Release
|
99
109
|
|
100
|
-
Modern.js
|
110
|
+
Modern.js 提供了自动发布版本 的 Github Action,提供基于选择的分支自动执行 release 操作,将包发布到 NPM 上。
|
101
111
|
|
102
112
|
#### 使用
|
103
113
|
|
104
|
-
在仓库中创建 `.github/workflows/release.yml` 文件,填入以下内容:
|
114
|
+
- 在仓库中创建 `.github/workflows/release.yml` 文件,填入以下内容:
|
105
115
|
|
106
116
|
```yaml
|
107
117
|
name: Release
|
@@ -111,14 +121,14 @@ on:
|
|
111
121
|
inputs:
|
112
122
|
version:
|
113
123
|
type: choice
|
114
|
-
description: 'Release Version(canary,
|
124
|
+
description: 'Release Version(canary, beta, alpha, latest)'
|
115
125
|
required: true
|
116
|
-
default: '
|
126
|
+
default: 'next'
|
117
127
|
options:
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
128
|
+
- canary
|
129
|
+
- beta
|
130
|
+
- alpha
|
131
|
+
- latest
|
122
132
|
branch:
|
123
133
|
description: 'Release Branch(confirm release branch)'
|
124
134
|
required: true
|
@@ -135,13 +145,14 @@ jobs:
|
|
135
145
|
# This makes Actions fetch only one branch to release
|
136
146
|
fetch-depth: 1
|
137
147
|
|
148
|
+
- ... # install dependencies and build repo package
|
138
149
|
- name: Release
|
139
|
-
uses: web-infra-dev/actions@
|
150
|
+
uses: web-infra-dev/actions@v2
|
140
151
|
with:
|
141
|
-
# this expects you to have a script called release which does a build for your packages and calls changeset publish
|
142
152
|
version: ${{ github.event.inputs.version }}
|
143
153
|
branch: ${{ github.event.inputs.branch }}
|
144
154
|
type: 'release'
|
155
|
+
tools: 'modern'
|
145
156
|
env:
|
146
157
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
147
158
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
@@ -149,16 +160,16 @@ jobs:
|
|
149
160
|
REF: ${{ github.ref }}
|
150
161
|
```
|
151
162
|
|
152
|
-
配置仓库的 NPM_TOKEN:
|
163
|
+
- 配置仓库的 NPM_TOKEN:
|
153
164
|
|
154
165
|

|
155
166
|
|
156
|
-
将 Workflow 合并到主分支后,进入 Github 仓库对应的 Action 页面,选择 Release:
|
167
|
+
- 将 Workflow 合并到主分支后,进入 Github 仓库对应的 Action 页面,选择 Release:
|
157
168
|
|
158
169
|

|
159
170
|
|
160
|
-
选择分支名称和发布版本类型,点击 Run workflow 按钮:
|
171
|
+
- 选择分支名称和发布版本类型,点击 Run workflow 按钮:
|
161
172
|
|
162
173
|

|
163
174
|
|
164
|
-
Workflow 将自动完成仓库 build 和发布到 NPM 流程。
|
175
|
+
- Workflow 将自动完成仓库 build 和发布到 NPM 流程。
|