@modern-js/main-doc 2.52.0 → 2.53.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. package/docs/en/guides/basic-features/routes.mdx +2 -2
  2. package/docs/en/guides/get-started/tech-stack.mdx +0 -6
  3. package/docs/en/guides/topic-detail/framework-plugin/plugin-api.mdx +1 -1
  4. package/docs/en/guides/topic-detail/generator/create/option.md +0 -5
  5. package/docs/en/guides/topic-detail/generator/create/use.mdx +1 -10
  6. package/docs/en/guides/topic-detail/generator/new/config.md +0 -29
  7. package/docs/en/guides/topic-detail/generator/new/use.md +0 -20
  8. package/docs/zh/guides/basic-features/routes.mdx +2 -2
  9. package/docs/zh/guides/get-started/tech-stack.mdx +0 -6
  10. package/docs/zh/guides/topic-detail/framework-plugin/plugin-api.mdx +1 -1
  11. package/docs/zh/guides/topic-detail/generator/create/option.md +0 -5
  12. package/docs/zh/guides/topic-detail/generator/create/use.mdx +1 -10
  13. package/docs/zh/guides/topic-detail/generator/new/config.md +0 -31
  14. package/docs/zh/guides/topic-detail/generator/new/use.md +0 -20
  15. package/package.json +5 -5
  16. package/docs/en/apis/app/runtime/testing/_category_.json +0 -4
  17. package/docs/en/apis/app/runtime/testing/act.mdx +0 -35
  18. package/docs/en/apis/app/runtime/testing/cleanup.mdx +0 -40
  19. package/docs/en/apis/app/runtime/testing/render.mdx +0 -71
  20. package/docs/en/apis/app/runtime/testing/renderApp.mdx +0 -34
  21. package/docs/en/configure/app/testing/_category_.json +0 -4
  22. package/docs/en/configure/app/testing/transformer.mdx +0 -17
  23. package/docs/en/configure/app/tools/jest.mdx +0 -40
  24. package/docs/en/guides/advanced-features/testing.mdx +0 -47
  25. package/docs/en/guides/topic-detail/changesets/_category_.json +0 -4
  26. package/docs/en/guides/topic-detail/changesets/add.mdx +0 -125
  27. package/docs/en/guides/topic-detail/changesets/changelog.mdx +0 -238
  28. package/docs/en/guides/topic-detail/changesets/commit.mdx +0 -269
  29. package/docs/en/guides/topic-detail/changesets/config.mdx +0 -147
  30. package/docs/en/guides/topic-detail/changesets/github.mdx +0 -175
  31. package/docs/en/guides/topic-detail/changesets/introduce.mdx +0 -56
  32. package/docs/en/guides/topic-detail/changesets/release-note.mdx +0 -274
  33. package/docs/en/guides/topic-detail/changesets/release-pre.mdx +0 -49
  34. package/docs/en/guides/topic-detail/changesets/release.mdx +0 -229
  35. package/docs/en/guides/topic-detail/model/test-model.mdx +0 -45
  36. package/docs/zh/apis/app/runtime/testing/_category_.json +0 -4
  37. package/docs/zh/apis/app/runtime/testing/act.mdx +0 -35
  38. package/docs/zh/apis/app/runtime/testing/cleanup.mdx +0 -40
  39. package/docs/zh/apis/app/runtime/testing/render.mdx +0 -71
  40. package/docs/zh/apis/app/runtime/testing/renderApp.mdx +0 -32
  41. package/docs/zh/configure/app/testing/_category_.json +0 -4
  42. package/docs/zh/configure/app/testing/transformer.mdx +0 -19
  43. package/docs/zh/configure/app/tools/jest.mdx +0 -40
  44. package/docs/zh/guides/advanced-features/testing.mdx +0 -47
  45. package/docs/zh/guides/topic-detail/changesets/_category_.json +0 -4
  46. package/docs/zh/guides/topic-detail/changesets/add.mdx +0 -126
  47. package/docs/zh/guides/topic-detail/changesets/changelog.mdx +0 -238
  48. package/docs/zh/guides/topic-detail/changesets/commit.mdx +0 -269
  49. package/docs/zh/guides/topic-detail/changesets/config.mdx +0 -147
  50. package/docs/zh/guides/topic-detail/changesets/github.mdx +0 -175
  51. package/docs/zh/guides/topic-detail/changesets/introduce.mdx +0 -56
  52. package/docs/zh/guides/topic-detail/changesets/release-note.mdx +0 -274
  53. package/docs/zh/guides/topic-detail/changesets/release-pre.mdx +0 -50
  54. package/docs/zh/guides/topic-detail/changesets/release.mdx +0 -231
  55. package/docs/zh/guides/topic-detail/model/test-model.mdx +0 -45
  56. package/docs/zh/guides/topic-detail/monorepo/_category_.json +0 -4
  57. package/docs/zh/guides/topic-detail/monorepo/create-sub-project.mdx +0 -53
  58. package/docs/zh/guides/topic-detail/monorepo/intro.mdx +0 -14
  59. package/docs/zh/guides/topic-detail/monorepo/publish.mdx +0 -69
  60. package/docs/zh/guides/topic-detail/monorepo/sub-project-interface.mdx +0 -143
@@ -1,126 +0,0 @@
1
- ---
2
- sidebar_position: 2
3
- ---
4
-
5
- # 添加 Changesets
6
-
7
- 当我们开发完成时,需要添加一个 changeset 声明当前变更,用于后续版本发布。
8
-
9
- ## 信息
10
-
11
- 一个 changeset 包含的内容包括:
12
-
13
- - 本次变更涉及哪些包的变更。
14
-
15
- - 本次变更需要升级的版本号类型,类型符合 [semver](https://semver.org/) 规范。
16
-
17
- - 本次变更的 changelog 信息。
18
-
19
- ## 步骤
20
-
21
- :::info
22
- 以下示例命令都以 pnpm 作为包管理工具进行,如果需要使用其他包管理工具,请按需求进行替换。
23
-
24
- :::
25
-
26
- ### Modern.js Module
27
-
28
- #### 在根目录执行 change 命令
29
-
30
- ```bash
31
- pnpm run change
32
- ```
33
-
34
- #### 选择本次变更需要升级的版本号类型
35
-
36
- ![选择版本类型](https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/changeset-select-version.png)
37
-
38
- #### 填入 changelog 信息,并点击两次回车:
39
-
40
- ![写入变更信息](https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/changeset-input-changelog.png)
41
-
42
- 执行完成后,将在项目的 `.changeset` 目录创建对应的 changeset 文件,文件内容如下:
43
-
44
- ```markdown
45
- ---
46
- 'module-changeset': patch
47
- ---
48
-
49
- feat: test module solution changeset
50
- ```
51
-
52
- 该文件中包含了 changeset 的所有信息。
53
-
54
- ### Monorepo 工程方案
55
-
56
- 我们假设 monorepo 中存在三个模块包,分别为 `module-1`,`module-2`,`module-3`。
57
-
58
- #### 在根目录执行 change 命令
59
-
60
- ```bash
61
- pnpm run change
62
- ```
63
-
64
- #### 选择本次需要升级的包列表
65
-
66
- Changesets 会根据当前代码变更(`git diff Head...baseBranch`),将 Monorepo 中的 package 分为两类,`changed packages` 和 `unchanged packages`,方便用户进行选择。
67
-
68
- 使用空格键选择对应的包或者分类即可,选择完成后点击回车:
69
-
70
- ![选择升级包](https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/changeset-select-packages.png)
71
-
72
- #### 分别选择不同版本类型对应的包
73
-
74
- changeset 会询问 `major` 和 `minor` 类型,如果存在包未选择这两种类型,将会默认使用 `patch` 类型。
75
-
76
- ![选择升级包版本类型](https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/changeset-auto-select-patch.png)
77
-
78
- #### 填入 changelog 信息
79
-
80
- ![写入变更信息](https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/changeset-input-changelog-monorepo.png)
81
-
82
- 执行完成后,将在项目的 `.changeset` 目录创建对应的 changeset 文件,文件内容如下:
83
-
84
- ```markdown
85
- ---
86
- 'module-2': minor
87
- 'module-3': patch
88
- ---
89
-
90
- feat: test-changeset
91
- ```
92
-
93
- 该文件中包含了 changeset 的所有信息,不同的包也会根据选择的版本类型进行标记。
94
-
95
- ## 参数
96
-
97
- change 命令支持以下参数:
98
-
99
- - `--empty`: 添加一个空的 changeset。
100
-
101
- ```bash
102
- pnpm run change --empty
103
- ```
104
-
105
- 执行完成后,将在项目的 `.changeset` 目录创建空的 changeset 文件,文件内容如下:
106
-
107
- ```markdown
108
- ---
109
- ---
110
- ```
111
-
112
- - `--open`: 使用该参数时,在填写 changelog 步骤会打开系统默认编辑器进行填写。
113
-
114
- ## 注意事项
115
-
116
- - 不是所有的变更都需要 changeset
117
-
118
- 如果当前变更是修改仓库的一些基础设施,比如 CI、测试等,就不需要添加 changeset 或者可以添加一个空的 changeset。
119
-
120
- - 一个 pull reuqest 可以提交多个 changeset
121
-
122
- 当一个 pull request 存在多个功能开发或者问题修复时,可以多次执行 `pnpm run change` 添加多个 changeset 文件,每个文件选择对应功能的包和添加变更信息即可。
123
-
124
- - 创建 changeset 时,需要选择该功能相关的所有包
125
-
126
- 在 Monorepo 中创建 changeset 时,需要选中和该功能相关的所有变更包,避免出现发版时部分包未发布的情况。
@@ -1,238 +0,0 @@
1
- ---
2
- sidebar_position: 6
3
- ---
4
-
5
- # 自定义 changelog 生成
6
-
7
- Changesets 默认会使用 `@changesets/cli/changelog` 生成 Changelog 信息,如果默认的 changelog 信息不能满足需求,可以自定义 changelog 的生成。
8
-
9
- ## 自定义 changelog 内容
10
-
11
- changelog 信息主要包含以下两种信息:
12
-
13
- - changeset 中写入的 changelog 信息。
14
-
15
- - 本次版本升级关联包的版本变更信息。
16
-
17
- 自定义逻辑主要实现两个函数,`getReleaseLine` 和 `getDependencyReleaseLine`,分别用来定义上述这两种信息。
18
-
19
- ### getReleaseLine
20
-
21
- #### Params
22
-
23
- - changeset
24
-
25
- ```ts
26
- export type VersionType = 'major' | 'minor' | 'patch' | 'none';
27
-
28
- export type Release = { name: string; type: VersionType };
29
-
30
- export type Changeset = {
31
- id: string; // changeset 的文件名称
32
- commit?: string; // changeset 提交时的 commit id 信息
33
- summary: string; // changeset 内容信息
34
- releases: Array<Release>; // 当前计算出的 changeset 升级包名称及类型信息
35
- };
36
- ```
37
-
38
- - type
39
-
40
- 当前包对应的升级版本类型,类型为上述 `VersionType`。
41
-
42
- #### 返回值
43
-
44
- changelog 内容。
45
-
46
- #### 默认实现
47
-
48
- `@changesets/cli/changelog` 默认处理逻辑为将 `summary` 信息按照换行符 `\n` 分割,第一样前面增加 `-` 作为列表开头,其他内容作为第一行内容的补充整理在列表下方。
49
-
50
- ```ts
51
- async function getReleaseLine(changeset, type) {
52
- const [firstLine, ...futureLines] = changeset.summary
53
- .split('\n')
54
- .map(l => l.trimRight());
55
-
56
- let returnVal = `- ${
57
- changeset.commit ? `${changeset.commit}: ` : ''
58
- }${firstLine}`;
59
-
60
- if (futureLines.length > 0) {
61
- returnVal += `\n${futureLines.map(l => ` ${l}`).join('\n')}`;
62
- }
63
-
64
- return returnVal;
65
- }
66
- ```
67
-
68
- ### getDependencyReleaseLine
69
-
70
- #### Params
71
-
72
- - changesets
73
-
74
- 当前关联的所有 changeset 信息,类型为 `getReleaseLine` changeset 类型数组。
75
-
76
- - dependenciesUpdated
77
-
78
- ```ts
79
- type ModCompWithPackage = {
80
- name: string; // 依赖模块名称
81
- type: VersionType; // 依赖模块的升级类型
82
- oldVersion: string; // 依赖模块当前版本号
83
- newVersion: string; // 依赖模块新版本号
84
- changesets: string[]; // 关联的 changeset id 列表
85
- packageJson: PackageJSON; // 依赖模块完整的 package.json 内容
86
- dir: string; // 依赖模块的路径(绝对路径)
87
- };
88
-
89
- type DependenciesUpdated = ModCompWithPackage[];
90
- ```
91
-
92
- #### 返回值
93
-
94
- changelog 内容。
95
-
96
- #### 默认实现
97
-
98
- `@changesets/cli/changelog` 默认会使用 changesets 信息展示对应的 `Updated dependencies + commit id`,以列表形式展示。然后根据 `dependenciesUpdated` 信息展示对应的依赖包包名和新版本号,作为列表的子列表项。
99
-
100
- ```ts
101
- async function getDependencyReleaseLine(changesets, dependenciesUpdated) {
102
- console.log('getDependencyReleaseLine', changesets, dependenciesUpdated);
103
- if (dependenciesUpdated.length === 0) return '';
104
-
105
- const changesetLinks = changesets.map(
106
- changeset =>
107
- `- Updated dependencies${
108
- changeset.commit ? ` [${changeset.commit}]` : ''
109
- }`,
110
- );
111
-
112
- const updatedDepenenciesList = dependenciesUpdated.map(
113
- dependency => ` - ${dependency.name}@${dependency.newVersion}`,
114
- );
115
-
116
- return [...changesetLinks, ...updatedDepenenciesList].join('\n');
117
- }
118
- ```
119
-
120
- 展示效果为:
121
-
122
- ```markdown
123
- - Updated dependencies [f0438ab]
124
- - Updated dependencies [f0438ab]
125
- - module-3@2.0.0
126
- - module-1@0.2.0
127
- ```
128
-
129
- ## 配置
130
-
131
- Changesets 配置文件中 `changelog` 字段用于标记 changelog 信息的获取途径。
132
-
133
- 该配置可以为字符串,直接声明获取 changelog 信息模块的模块名称或者路径。
134
-
135
- 该配置还支持配置数组,数组中第一个元素为获取 changelog 信息模块的模块名称或者路径,第二个元素为传入对应函数的参数值,会作为 `getReleaseLine` 和 `getDependencyReleaseLine` 函数的第三个参数传入。
136
-
137
- ### 配置相对路径
138
-
139
- changelog 配置如果为相对路径为 `.changesets` 目录下的相对路径。
140
-
141
- 例如创建 `.changeset/my-changelog-config.js` 文件,定义如下内容:
142
-
143
- ```ts title=".changeset/my-changelog-config.js"
144
- async function getReleaseLine(changeset, type) {}
145
-
146
- async function getDependencyReleaseLine(changesets, dependenciesUpdated) {}
147
-
148
- module.exports = {
149
- getReleaseLine,
150
- getDependencyReleaseLine,
151
- };
152
- ```
153
-
154
- `changlog` 配置为 `./my-changelog-config.js` 即可:
155
-
156
- ```json title=".changesets/config.json"
157
- {
158
- "changelog": "./my-changelog-config.js",
159
- ...
160
- }
161
- ```
162
-
163
- ### 使用 Modern.js Module
164
-
165
- 自定义 changelog 还可以使用 Modern.js Module 方案进行管理,提供通用方案。
166
-
167
- #### 使用 `npx @modern-js/create@latest` 创建 Modern.js Module
168
-
169
- ```md
170
- ? 请选择你想创建的工程类型:Npm 模块
171
- ? 请填写项目名称:custom-changelog
172
- ? 请选择开发语言:TS
173
- ? 请选择包管理工具:pnpm
174
- ```
175
-
176
- #### 实现自定义内容
177
-
178
- ```ts title="src/index.ts"
179
- export async function getReleaseLine() {}
180
-
181
- export async function getDependencyReleaseLine() {}
182
- ```
183
-
184
- #### 将模块发布到 NPM
185
-
186
- #### 在目标仓库根目录安装对应模块,例如 `custom-changelog`
187
-
188
- #### 配置 changeset 的 changelog 配置为包名称
189
-
190
- ```json title=".changesets/config.json"
191
- {
192
- "changelog": "custom-changelog",
193
- ...
194
- }
195
- ```
196
-
197
- ### 使用 Monorepo 工程方案
198
-
199
- 如果你当前仓库为 Monorepo 工程方案,可以直接使用模块子项目进行管理。
200
-
201
- #### 执行 `pnpm run new` 创建模块子项目
202
-
203
- ```md
204
- ? 请选择你想创建的工程类型:Npm 模块
205
- ? 请填写子项目名称:custom-changelog
206
- ? 请填写子项目目录名称:custom-changelog
207
- ? 请选择开发语言:TS
208
- ```
209
-
210
- #### 实现自定义内容
211
-
212
- ```ts title="src/index.ts"
213
- export async function getReleaseLine() {}
214
-
215
- export async function getDependencyReleaseLine() {}
216
- ```
217
-
218
- #### 在 Monorepo 根目录添加子项目模块依赖,例如 `custom-changelog`
219
-
220
- ```json title="package.json"
221
- {
222
- "devDependencies": {
223
- "custom-changelog": "workspace:*",
224
- ...
225
- }
226
- }
227
- ```
228
-
229
- #### 配置 changeset 的 changelog 配置为包名称
230
-
231
- ```json title=".changesets/config.json"
232
- {
233
- "changelog": "custom-changelog",
234
- ...
235
- }
236
- ```
237
-
238
- 该模块发布到 NPM 后,依然可以和模块类型一样供其他仓库使用。
@@ -1,269 +0,0 @@
1
- ---
2
- sidebar_position: 7
3
- ---
4
-
5
- # 自定义提交 commit 信息
6
-
7
- Changesets 支持配置 `commit` 为 true 时,在执行 `change` 和 `bump` 命令时自动提交当前变更。
8
-
9
- 默认的 `commit` 信息由 `@changesets/cli/commit` 提供,默认信息格式为:
10
-
11
- ![change commit](https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/changeset-change-commit-info.png)
12
- ![bump commit](https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/changeset-bump-commit-info.png)
13
-
14
- 当默认的 commit 信息不能满足需求时,支持自定义 commit 信息。
15
-
16
- ## 自定义 commit 信息内容
17
-
18
- commit 信息分为两种:
19
-
20
- - 执行 `change` 命令时自动生成的 commit 信息。
21
- - 执行 `bump` 命令时自动生成的 commit 信息。
22
-
23
- 自定义逻辑主要实现两个函数,`getAddMessage` 和 `getVersionMessage`,分别用来定义上述这两种信息。
24
-
25
- ### getAddMessage
26
-
27
- #### Params
28
-
29
- - changeset
30
-
31
- 当前创建的 chagneset 信息
32
-
33
- ```ts
34
- type Release = {
35
- name: string;
36
- type: VersionType;
37
- };
38
-
39
- type Changeset = {
40
- summary: string;
41
- releases: Array<Release>;
42
- };
43
- ```
44
-
45
- - options
46
-
47
- 配置 commit 时的配置信息。
48
-
49
- > commit 配置为数组时,第二个参数支持传入默认的配置信息,会对应的使用该参数传递。
50
-
51
- #### 返回值
52
-
53
- commit 信息内容。
54
-
55
- #### 默认实现
56
-
57
- `@changesets/cli/commit` 默认处理逻辑为以 `docs(changeset):` 开头,commit 信息为 changeset 的 `summary`,并根据传入的 `skipCI` 参数配置添加 [skip ci] 信息。
58
-
59
- ```ts
60
- type SkipCI = boolean | 'add' | 'version';
61
-
62
- const getAddMessage = async (
63
- changeset: Changeset,
64
- options: { skipCI?: SkipCI } | null,
65
- ) => {
66
- const skipCI = options?.skipCI === 'add' || options?.skipCI === true;
67
- return outdent`docs(changeset): ${changeset.summary}${
68
- skipCI ? `\n\n[skip ci]\n` : ''
69
- }`;
70
- };
71
- ```
72
-
73
- > [outdent](https://www.npmjs.com/package/outdent) 目的是删除模板字符串开头的空格内容,使 commit 信息更符合规范。
74
-
75
- ### getVersionMessage
76
-
77
- #### Params
78
-
79
- - releasePlan
80
-
81
- ```ts
82
- type VersionType = 'major' | 'minor' | 'patch' | 'none';
83
-
84
- type Release = {
85
- name: string;
86
- type: VersionType;
87
- };
88
-
89
- type Changeset = {
90
- id: string;
91
- summary: string;
92
- releases: Array<Release>;
93
- };
94
-
95
- type ComprehensiveRelease = {
96
- name: string;
97
- type: VersionType;
98
- oldVersion: string;
99
- newVersion: string;
100
- changesets: string[];
101
- };
102
-
103
- type PreState = {
104
- mode: 'pre' | 'exit'; // pre 模式当前状态
105
- tag: string; // pre 的类型
106
- initialVersions: {
107
- [pkgName: string]: string; // 版本升级前包名及版本号信息,Map 格式
108
- };
109
- changesets: string[]; // 本次升级的 changeset id 列表
110
- };
111
-
112
- type ReleasePlan = {
113
- changesets: Changeset[]; // 本次升级的 changeset 列表
114
- releases: ComprehensiveRelease[]; // 当前升级的包信息,包含包名称、当前版本、升级后版本、升级类型等
115
- preState: PreState | undefined; // 当前如果为 pre 发布,提供相关状态信息
116
- };
117
- ```
118
-
119
- - options
120
-
121
- 配置 commit 时的其他参数。
122
-
123
- > commit 配置为数组时,第二个参数支持传入默认的配置信息,会对应的使用该参数传递。
124
-
125
- #### 返回值
126
-
127
- commit 信息内容。
128
-
129
- #### 默认实现
130
-
131
- `@changesets/cli/commit` 默认处理逻辑为:先展示当前需要 release 的包数量,再展示 release 包的名称及新版本号,并根据传入的 `skipCI` 参数配置添加 [skip ci] 信息。
132
-
133
- ```ts
134
- const getVersionMessage = async (
135
- releasePlan: ReleasePlan,
136
- options: { skipCI?: SkipCI } | null,
137
- ) => {
138
- const skipCI = options?.skipCI === 'version' || options?.skipCI === true;
139
- const publishableReleases = releasePlan.releases.filter(
140
- release => release.type !== 'none',
141
- );
142
- const numPackagesReleased = publishableReleases.length;
143
-
144
- const releasesLines = publishableReleases
145
- .map(release => ` ${release.name}@${release.newVersion}`)
146
- .join('\n');
147
-
148
- return outdent`
149
- RELEASING: Releasing ${numPackagesReleased} package(s)
150
-
151
- Releases:
152
- ${releasesLines}
153
- ${skipCI ? `\n[skip ci]\n` : ''}
154
- `;
155
- };
156
- ```
157
-
158
- ## 配置
159
-
160
- Changesets 配置文件中 `commit` 字段,该字段用于标记是否需要在 `change` 和 `bump` 命令是提交 commit 信息及 commit 信息的获取途径。
161
-
162
- 该配置可以为 `boolean`,为 true 时使用默认 `@changesets/cli/commit` 格式化 commit 信息。
163
-
164
- 该配置可以为字符串,直接声明获取 commit 信息模块的模块名称或者路径。
165
-
166
- 该配置还支持配置数组,数组中第一个元素为获取 commit 信息模块的模块名称或者路径,第二个元素为传入对应函数的参数值,会作为 `getAddMessage` 和 `getVersionMessage` 函数的第二个参数传入。
167
-
168
- ### 配置相对路径
169
-
170
- commit 配置如果为相对路径为 `.changesets` 目录下的相对路径。
171
-
172
- 例如创建 `.changeset/my-commit-config.js` 文件,定义如下内容:
173
-
174
- ```js title=".changeset/my-commit-config.js"
175
- async function getAddMessage(changeset, options) {}
176
-
177
- async function getVersionMessage(releasePlan, options) {}
178
-
179
- module.exports = {
180
- getAddMessage,
181
- getVersionMessage,
182
- };
183
- ```
184
-
185
- commit 配置为 ./my-commit-config.js 即可:
186
-
187
- ```json title=".changesets/config.json"
188
- {
189
- "changelog": "./my-commit-config.js",
190
- ...
191
- }
192
- ```
193
-
194
- ### 使用 Modern.js Module
195
-
196
- 自定义 commit 还可以使用 Modern.js Module 进行管理,提供通用方案。
197
-
198
- #### 使用 `npx @modern-js/create@latest` 创建 Modern.js Module
199
-
200
- ```md
201
- ? 请选择你想创建的工程类型:Npm 模块
202
- ? 请填写项目名称:custom-commit
203
- ? 请选择开发语言:TS
204
- ? 请选择包管理工具:pnpm
205
- ```
206
-
207
- #### 实现自定义内容
208
-
209
- ```ts title="src/index.ts"
210
- export async function getAddMessage() {}
211
-
212
- export async function getVersionMessage() {}
213
- ```
214
-
215
- #### 将模块发布到 NPM
216
-
217
- #### 在目标仓库根目录安装对应模块,例如 `custom-commit`
218
-
219
- #### 配置 changeset 的 commit 配置为包名称
220
-
221
- ```json title="package.json"
222
- {
223
- "commit": "custom-commit",
224
- ...
225
- }
226
- ```
227
-
228
- ### 使用 Monorepo 工程方案
229
-
230
- 如果你当前仓库为 Monorepo 工程方案,可以直接使用模块子项目进行管理。
231
-
232
- #### 执行 `pnpm run new` 创建模块子项目
233
-
234
- ```md
235
- ? 请选择你想创建的工程类型:Npm 模块
236
- ? 请填写子项目名称:custom-commit
237
- ? 请填写子项目目录名称:custom-commit
238
- ? 请选择开发语言:TS
239
- ```
240
-
241
- #### 实现自定义内容
242
-
243
- ```ts title="src/index.ts"
244
- export async function getAddMessage() {}
245
-
246
- export async function getVersionMessage() {}
247
- ```
248
-
249
- #### 在 Monorepo 根目录添加子项目模块依赖,例如 `custom-commit`
250
-
251
- ```json title="package.json"
252
- {
253
- "devDependencies": {
254
- "custom-commit": "workspace:*",
255
- ...
256
- }
257
- }
258
- ```
259
-
260
- #### 配置 changeset 的 commit 配置为包名称
261
-
262
- ```json title=".changesets/config.json"
263
- {
264
- "commit": "custom-commit",
265
- ...
266
- }
267
- ```
268
-
269
- 该模块发布到 NPM 后,依然可以和模块类型一样供其他仓库使用。