@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,231 +0,0 @@
1
- ---
2
- sidebar_position: 3
3
- ---
4
-
5
- # 发布正式版本
6
-
7
- 发版正式版本时,我们需要根据开发过程中生成的 changesets 进行相关包版本号升级,并执行 publish 命令发布到 NPM 上。
8
-
9
- ## 步骤
10
-
11
- :::info
12
- 以下示例命令都以 pnpm 作为包管理工具进行,如果需要使用其他包管理工具,请按需求进行替换。
13
-
14
- :::
15
-
16
- ### Modern.js Module
17
-
18
- #### 在根目录执行 bump 命令
19
-
20
- ```bash
21
- pnpm run bump
22
- ```
23
-
24
- ![执行 bump 命令](https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/changeset-module-bump.png)
25
-
26
- 执行该命令时,changeset 会自动进行以下操作:
27
-
28
- - 删除 `.changesets` 目录下的所有 changeset 文件。
29
-
30
- - 根据 changeset 信息升级该包版本号。
31
-
32
- - 在根目录的 `CHANGELOG.md` 文件中写入 changelog 信息,文件不存在时会自动创建。
33
-
34
- #### 确认并提交当前变更
35
-
36
- ```bash
37
- git add .
38
- git commit -m "release: bump package"
39
- ```
40
-
41
- #### 在根目录执行以下命令发布包至 NPM
42
-
43
- ```bash
44
- pnpm run release
45
- ```
46
-
47
- ![执行 release 命令](https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/changeset-module-release.png)
48
-
49
- #### push 对应的 tag 信息至远程仓库
50
-
51
- ```bash
52
- git push --follow-tags
53
- ```
54
-
55
- ### Monorepo 工程方案
56
-
57
- #### 在根目录执行 bump 命令
58
-
59
- ```bash
60
- pnpm run bump
61
- ```
62
-
63
- ![执行 bump 命令](https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/changeset-monorepo-bump.png)
64
-
65
- 执行该命令时,changesets 会自动进行以下操作:
66
-
67
- - 删除 `.changesets` 目录下的所有 changeset 文件。
68
-
69
- - 根据 changeset 信息升级相关包的版本号,除了显示写入 changeset 的包,执行命令时还会将 Monorepo 中所有的包进行依赖关系分析,如果需要升级,也会对应的自动升级版本号。
70
-
71
- - 在需要升级的包目录的 `CHANGELOG.md` 文件中写入 Changelog 信息,文件不存在时会自动创建。
72
-
73
- #### 确认并提交当前变更
74
-
75
- :::info
76
- 需确认自动升级的版本号是否符合预期,如果需要了解版本升级策略,请查看[升级版本策略](/guides/topic-detail/changesets/release#升级版本策略)。
77
-
78
- :::
79
-
80
- ```bash
81
- git add .
82
- git commit -m "release: bump package"
83
- ```
84
-
85
- #### 在根目录执行以下命令发布包至 NPM
86
-
87
- ```bash
88
- pnpm run release
89
- ```
90
-
91
- 执行该命令时,将会依次判断 Monorepo 中所有的 packages 的版本是否在 NPM 中存在,如果不存在将会执行 `publish` 命令发布。
92
-
93
- :::warning
94
- 当 Monorepo 中包之间依赖关系使用 workspace 声明时,注意不要直接在 package 对应的子目录直接执行 `npm publish` 发布 package,使用 `release` 命令在发布时将会自动去除 workspace 声明,确保 NPM 包发布之后可用。
95
-
96
- :::
97
-
98
- #### push 对应的 tag 信息至远程仓库
99
-
100
- ```bash
101
- git push --follow-tags
102
- ```
103
-
104
- ## 参数
105
-
106
- ### bump 命令参数
107
-
108
- - `--snapshot`:生成基于时间戳的版本号。
109
-
110
- ```bash
111
- pnpm run bump --snapshot canary
112
- ```
113
-
114
- 执行完成后,对应的升级版本号将会变成 `0.0.0-canary-20220622092823` 的形式,其中 canary 为 snapshot 配置的标记,如果不配置,将直接生成 `0.0.0-20220622092823` 的形式。
115
-
116
- 该参数主要用于发布临时测试版本进行测试,不需要进行代码提交。
117
-
118
- - `--ignore`:发布时手动忽略部分包。
119
-
120
- 例如本次发布你需要忽略 `module-2` 包:
121
-
122
- ```bash
123
- pnpm run bump --ignore module-2
124
- ```
125
-
126
- 命令执行完成后,将会忽略 `module-2` 包的更新。注意如果存在包依赖 `module-2`,需要将对应包也加入到 `ignore` 参数中,否则 `bump` 命令将执行失败。
127
-
128
- 加入多个包的使用姿势为:
129
-
130
- ```bash
131
- pnpm run bump --ignore module-2 --ignore module-3
132
- ```
133
-
134
- ### release 命令参数
135
-
136
- - `--otp`:使用 `npm token` 发布包。
137
-
138
- ```bash
139
- pnpm run relese --otp <token>
140
- ```
141
-
142
- - `--tag`:发布使用特定的 tag,默认使用 `latest`
143
-
144
- ```bash
145
- pnpm run release --tag <tag>
146
- ```
147
-
148
- - `--ignore-scripts`:发布时忽略 npm scripts。
149
-
150
- 执行 `publish` 命令时,npm 会自动触发很多命令,比如 `prepare`、`prepublish`,使用该参数可以忽略这些命令执行。该参数仅支持在使用 pnpm 的 Monorepo 中使用。
151
-
152
- ```bash
153
- pnpm run release --ignore-scripts
154
- ```
155
-
156
- - `--no-git-checks`:发布时忽略检查当前分支。
157
-
158
- 执行发布命令时,默认会自动检查当前分支是否为发布分支,是否存在未提交变更等等,使用该参数可以忽略 git 相关检查。
159
-
160
- ```bash
161
- pnpm run release --no-git-checks
162
- ```
163
-
164
- ## 升级版本策略
165
-
166
- ### dependencies 或者 devDependencies 依赖
167
-
168
- - patch 版本依赖只升级自身
169
-
170
- 例如存在如下场景:
171
-
172
- Monorepo 中存在两个包,`module-1` 和 `module-2`,`module-2` 的 `dependencies` 中存在 `module-1`。
173
-
174
- 当前存在的 changeset 为 `module-1` 的 `patch` 版本升级。
175
-
176
- 执行 bump 命令后将只会升级 `module-1` 的 patch 版本号。
177
-
178
- - major / minor 版本自身升级 major 或者 minor 版本号,依赖包升级 patch 版本号
179
-
180
- 例如存在如下场景:
181
-
182
- Monorepo 中存在两个包,`module-1` 和 `module-2`,`module-2` 的 dependencies 中存在`module-1`。
183
-
184
- 当前存在的 changeset 为 `module-1` 的 minor 版本升级。
185
-
186
- 执行 bump 命令后 `module-1` 会升级 `minor` 版本号,`module -2` 会升级 `patch` 版本号。
187
-
188
- ### peerDependencies 依赖
189
-
190
- - patch 版本依赖自身和依赖包都升级 patch 版本号
191
-
192
- 例如存在如下场景:
193
-
194
- Monorepo 中存在两个包,`module-1` 和 `module-2`,`module-2` 的 `peerDependencies` 中存在 `module-1`。
195
-
196
- 当前存在的 changeset 为 `module-1` 的 patch 版本升级。
197
-
198
- 执行 bump 命令后将 `module-1` 和 `module-2` 都升级 patch 版本号。
199
-
200
- - major / minor 版本自身升级 major 或者 minor 版本号,依赖包升级 major 版本号
201
-
202
- 例如存在如下场景:
203
-
204
- Monorepo 中存在两个包,`module-1` 和 `module-2`,`module-2` 的 `peerDependencies` 中存在 `module-1`。
205
-
206
- 当前存在的 changeset 为 `module-1` 的 `minor` 版本升级。
207
-
208
- 执行 bump 命令后将 module-1 将升级 `minor` 版本号, `module-2` 升级 `major` 版本号。
209
-
210
- - 修改 peerDependencies 的升级策略
211
-
212
- `peerDependencies` 的升级策略支持通过配置 `onlyUpdatePeerDependentsWhenOutOfRange` 来修改依赖升级策略,当只有超出声明的版本类型范围时,才对应升级 `peerDependencies`。
213
-
214
- ```json
215
- {
216
- "___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": {
217
- "onlyUpdatePeerDependentsWhenOutOfRange": true
218
- },
219
- ...
220
- }
221
- ```
222
-
223
- 例如存在如下场景:
224
-
225
- Monorepo 中存在两个包,`module-1` 和 `module-2`,`module-2` 的 `peerDependencies` 中存在 `module-1`,声明 `module-1` 的版本号使用 `^`。
226
-
227
- 当前存在的 changeset 为 `module-1` 的 `patch` 或者 `minor` 版本升级。
228
-
229
- 执行 `bump` 命令后只升级 `module-1` 版本号。
230
-
231
- 需注意,如果包版本号在 `0.x.x` 的范围时,`minor` 版本号升级也是超出声明的版本类型范围的。
@@ -1,45 +0,0 @@
1
- ---
2
- sidebar_position: 9
3
- title: 测试 Model
4
- ---
5
- # 测试 Model
6
-
7
- 好的测试对代码的稳健性至关重要。下面以 [快速上手](/guides/topic-detail/model/quick-start) 的 `countModel` 为例,演示在 Modern.js 中,如何对 Model 进行单元测试。
8
-
9
- 使用测试功能,需要先开启该功能。在项目根目录下,执行 `pnpm run new`,进行如下选择:
10
-
11
- ```bash
12
- ? 请选择你想要的操作 启用可选功能
13
- ? 请选择功能名称 启用「单元测试 / 集成测试」功能
14
- ```
15
-
16
- 即可开启测试功能支持。
17
-
18
- 新增 `count.test.ts` 文件,代码如下:
19
-
20
- ```ts
21
- import { createStore } from '@modern-js/runtime/testing';
22
- import countModel from './count';
23
-
24
- describe('test model', () => {
25
- it('count value should plus one after add', () => {
26
- const store = createStore();
27
- const [state, { add }] = store.use(countModel);
28
-
29
- expect(state).toEqual({ value: 1 });
30
-
31
- add();
32
-
33
- expect(store.use(countModel)[0]).toEqual({ value: 2 });
34
- });
35
- });
36
- ```
37
-
38
- :::info
39
- 这里使用的 [`createStore`](/apis/app/runtime/model/create-store) 是从 `@modern-js/runtime/testing` 导入的,内部会使用 [`runtime.state`](/configure/app/runtime/state) 的配置去创建 `store`。
40
-
41
- :::
42
-
43
- 在测试用例里,我们新建一个 `store` 来挂载 `countModel`,通过 `store.use` 获取 `countModel` 的 State 和 Actions。然后调用 `add` Action 更新状态,并断言更新后的状态值。
44
-
45
- 执行 `pnpm run test` 命令,触发测试用例的执行。
@@ -1,4 +0,0 @@
1
- {
2
- "label": "Monorepo",
3
- "position": 4
4
- }
@@ -1,53 +0,0 @@
1
- ---
2
- sidebar_position: 2
3
- ---
4
-
5
- # 创建子项目
6
-
7
- 本章将要介绍如何在 Monorepo 工程下创建子项目。
8
-
9
- > Modern.js 支持使用 pnpm 和 Yarn 的 Monorepo,这里以使用 pnpm 为例。以下命令可以以同样方式使用 Yarn 来执行。
10
-
11
- Modern.js 针对 Monorepo 工程提供了生成器功能,它用于在 Monorepo 工程下创建不同类型的 Monorepo 子项目。在生成器中提供以下类型子项目的创建:
12
-
13
- - 「应用」类型
14
- - 「模块」类型
15
-
16
- 要启动 Monorepo 的生成器功能,可以在 Monorepo 工程根目录下执行命令:
17
-
18
- ```
19
- pnpm run new
20
- ```
21
-
22
- :::info 补充信息
23
- 使用 Yarn 的方式:`yarn new`
24
-
25
- :::
26
-
27
- 执行成功后,可以看到如下内容:
28
-
29
- ```
30
- ? 请选择你想创建的工程类型 (Use arrow keys)
31
- ❯ Web 应用
32
- Npm 模块
33
- ```
34
-
35
- 然后根据不同的需求选择对应的类型项目选项,选择之后便开始出现对应子项目类型的问题和选项。例如选择「应用」后会出现:
36
-
37
- ```
38
- ? 请选择你想创建的工程类型:Web应用
39
- ? 请填写子项目名称
40
- ```
41
-
42
- 当完成所有生成器问题之后,便开始进行项目的创建和项目依赖的下载。当创建成功之后,可以看到类似以下内容:
43
-
44
- ```
45
- [INFO] 依赖自动安装成功
46
- [INFO] 创建成功!
47
- 可在新项目的目录下运行以下命令:
48
- pnpm run dev # 启动开发服务器
49
- pnpm run build # 构建生产环境产物
50
- pnpm run serve # 启动生产环境服务
51
- pnpm run lint # 运行 ESLint 并自动修复问题
52
- pnpm run new # 启用可选功能或创建项目要素
53
- ```
@@ -1,14 +0,0 @@
1
- ---
2
- sidebar_position: 1
3
- ---
4
-
5
- # Monorepo 工程介绍
6
-
7
- Modern.js 提供了对于 Monorepo 工程方案的支持,其主要通过 `@modern-js/monorepo-tools` 来提供功能。
8
-
9
- 该专题将从以下方面来讲解如何使用 Modern.js 对 Monorepo 进行管理:
10
-
11
- - 在 Monorepo 中创建子项目
12
- - Monorepo 下子项目之间的联调开发
13
- - 发布 Monorepo 的子项目
14
- - 部署 Monorepo 子项目
@@ -1,69 +0,0 @@
1
- ---
2
- sidebar_position: 4
3
- ---
4
-
5
- # 可复用模块的发布
6
-
7
- 在 Monorepo 中有时会需要把多个模块项目发布到 [NPM](https://www.npmjs.com/) 上,本章将要介绍如果在 Monorepo 中对子项目进行版本更新以及发布。
8
-
9
- ## 准备工作
10
-
11
- 接着 [子项目联调](/guides/topic-detail/monorepo/sub-project-interface) 章节的例子,我们对 `components` 模块进行发布。
12
-
13
- ## 生成变更记录
14
-
15
- 在开发阶段,当某个模块的功能开完完成之后,一般需要提交代码(例如提交到 [GitHub](https://github.com/) 上)并需要记录本次修改的内容。在 Modern.js 的 Monorepo 工程中,我们可以在 monorepo 根目录执行命令:
16
-
17
- ```
18
- pnpm run change
19
- ```
20
-
21
- 然后根据提示选择变更或者将要发布的包以及选择包升级的版本,并填写变更信息。变更信息的内容可以包含此次开发的功能、修复的问题等。
22
-
23
- 那么对于上面的例子,我们选择变更的项目为 `components`,并填写此次变更的内容:
24
-
25
- ```
26
- $ modern change
27
- 🦋 Which packages would you like to include? · components
28
- 🦋 Which packages should have a major bump? · No items were selected
29
- 🦋 Which packages should have a minor bump? · components
30
- 🦋 Please enter a summary for this change (this will be in the changelogs). Submit empty line to open external editor
31
- 🦋 Summary · add features
32
- 🦋 === Releasing the following packages ===
33
- 🦋 [Minor]
34
- 🦋 components
35
- 🦋 ╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
36
- 🦋 ║ ========= NOTE ======== ║
37
- 🦋 ║All dependents of these packages that will be incompatible with the new version will be patch bumped when this changeset is applied.║
38
- 🦋 ╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
39
- 🦋 Is this your desired changeset? (Y/n) · true
40
- 🦋 Changeset added! - you can now commit it
41
- 🦋
42
- 🦋 If you want to modify or expand on the changeset summary, you can find it here
43
- 🦋 info /Users/demo/modern-js/official/monorepo-pnpm/.changeset/silent-tigers-run.md
44
- ```
45
-
46
- 该命令完成后,在 `.changeset` 中会有新的 `silent-tigers-run.md` 文件生成,其中包含了刚刚填写的信息,这些新生成的文件将用于后面发布流程中使用。**因此在提交代码的时候,需要将`.changeset` 目录下的文件一并提交**。
47
-
48
- ## 版本更新
49
-
50
- 在模块发布之前,还需要将模块的版本进行更新。。在 Modern.js 的 Monorepo 工程中,可以在 Monorepo 项目根目录下执行:
51
-
52
- ```
53
- pnpm run bump
54
- ```
55
-
56
- 该命令会根据之前生成在 `.changeset` 目录下的文件自动更新对应模块的版本号和 CHANGELOG 信息,执行成功后会看到:
57
-
58
- ```
59
- 🦋 All files have been updated. Review them and commit at your leisure
60
- ```
61
-
62
- ## 发布
63
-
64
- 最后执行 `pnpm run prepare --filter {./packages} && pnpm run release`,便可以发布对应的模块了。
65
-
66
- :::info 补充信息
67
- 在上面的命令中 --filter \{./packages\} 用于筛选位于 `./packages` 目录下的子项目,可以通过 [PNPM Filtering](https://pnpm.io/filtering) 来了解更多它的使用。
68
-
69
- :::
@@ -1,143 +0,0 @@
1
- ---
2
- sidebar_position: 3
3
- ---
4
-
5
- # 子项目联调
6
-
7
- 本章将要介绍如何在 Monorepo 下进行子项目之间的联调使用。
8
-
9
- ## 准备工作
10
-
11
- 按照 [「创建子项目」](/guides/topic-detail/monorepo/create-sub-project) 章节的介绍(如果还没有看过,可以先了解一下),我们首先创建以下三个子项目:
12
-
13
- - 一个「应用」子项目
14
- - 一个「模块」子项目
15
-
16
- 执行 `pnpm run new`,并按照如下进行选择:
17
-
18
- **「应用」子项目:**
19
-
20
- ```
21
- ? 请选择你想创建的工程类型:Web 应用
22
- ? 请填写子项目名称:app
23
- ? 请填写子项目目录名称:app
24
- ? 请选择开发语言:TS
25
- ```
26
-
27
- **「模块」子项目:**
28
-
29
- ```
30
- ? 请选择你想创建的工程类型:Npm 模块
31
- ? 请填写子项目名称:components
32
- ? 请填写子项目目录名称:components
33
- ? 请选择开发语言:TS
34
- ```
35
-
36
- 创建成功后,会得到以下项目:
37
-
38
- - `./apps/app`
39
- - `./packages/components`
40
-
41
- 然后修改一下默认的代码和新增文件:
42
-
43
- **重命名 `./packages/components/src/index.tsx`**
44
-
45
- ```tsx
46
- import './index.css';
47
-
48
- export default function ({ text }: { text: string }) {
49
- return (
50
- <div>
51
- This is UI Components Log: <p className="log">{text}</p>
52
- </div>
53
- );
54
- }
55
- ```
56
-
57
- **新增 `./packages/components/src/index.css`**
58
-
59
- ```css
60
- .log {
61
- color: gray;
62
- }
63
- ```
64
-
65
- **修改 `./apps/app/src/App.tsx`**
66
-
67
- ```tsx
68
- import { Switch, Route } from '@modern-js/runtime/router';
69
- import Comp from 'components';
70
-
71
- import './App.css';
72
-
73
- const App = () => (
74
- <Switch>
75
- <Route exact={true} path="/">
76
- <div className="container-box">
77
- <Comp text="hello world" />
78
- {/* 省略... */}
79
- </div>
80
- </Route>
81
- <Route path="*">
82
- <div>404</div>
83
- </Route>
84
- </Switch>
85
- );
86
-
87
- export default App;
88
- ```
89
-
90
- 到此为止我们创建了一个可以被发布到外部的组件项目以及一个使用组件的应用项目,如果直接运行应用项目还暂时无法正常使用。接下来将要介绍如何让它们能够互相联调使用,成功的使应用子项目 `apps/app` 正常运行。
91
-
92
- :::info
93
- 启动 `apps/app` 项目之前需要先构建(`pnpm run build`) `packages/component`。
94
-
95
- :::
96
-
97
- 由于 Modern.js 支持 pnpm 与 Yarn 的 Monorepo 工程,接下来会从这两个方面分别介绍。
98
-
99
- ## 在使用 pnpm 的 Monorepo 中进行项目联调
100
-
101
- 在 pnpm 的 Monorepo 项目中,我们通过在 `apps/app` 子项目下执行以下命令,将 `packages/components` 子项目加入到应用的依赖列表当中。
102
-
103
- ```
104
- pnpm add components
105
- ```
106
-
107
- 执行成功后,在 `apps/app/package.json` 会发生如下变化:
108
-
109
- ```json
110
- {
111
- "dependencies": {
112
- ++ "components": "workspace:^0.1.0"
113
- },
114
- }
115
- ```
116
-
117
- :::info 补充信息
118
- `workspace:^0.1.0` 是一种 PNPM 提供的 [Workspace 协议](https://pnpm.io/workspaces#workspace-protocol-workspace)。
119
-
120
- :::
121
-
122
- 当依赖安装成功之后,我们还需要将 `packages/components` 进行构建,因为需要使用其构建产物。
123
-
124
- 到此为止,`app/apps` 应用子项目可以正常的运行了。在修改 `packages/components` 的源码并构建之后,会触发应用子项目的热更新。
125
-
126
- ## 在使用 Yarn 的 Monorepo 中进行项目联调
127
-
128
- 在 Yarn 的 Monorepo 项目中,默认情况下可以直接在 `apps/app` 应用项目中直接使用组件项目。
129
-
130
- :::info 补充信息
131
- 之所以可以直接在应用中使用组件项目,是因为 Yarn 将这些子项目模块提升到了顶层的 `node_modules`内。
132
-
133
- :::
134
-
135
- 但是考虑到依赖关系的严谨性,建议在 `apps/app/package.json` 中进行显式依赖声明:
136
-
137
- ```json
138
- {
139
- "dependencies": {
140
- ++ "components": "0.1.0"
141
- },
142
- }
143
- ```