@modern-js/main-doc 2.15.0 → 2.17.0
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +26 -0
- package/docs/en/about/contributing-guide.mdx +268 -0
- package/docs/en/about/releases.mdx +31 -0
- package/docs/en/about/showcase.mdx +15 -0
- package/docs/en/about/team.mdx +29 -0
- package/docs/en/configure/app/output/disable-svgr.mdx +13 -0
- package/docs/zh/about/contributing-guide.mdx +267 -0
- package/docs/zh/about/releases.mdx +31 -0
- package/docs/zh/about/showcase.mdx +15 -0
- package/docs/zh/about/team.mdx +29 -0
- package/docs/zh/configure/app/output/disable-svgr.mdx +13 -0
- package/modern.config.ts +6 -0
- package/package.json +10 -6
- package/src/.eslintrc.json +3 -0
- package/src/components/RandomMemberList/index.module.scss +35 -0
- package/src/components/RandomMemberList/index.tsx +122 -0
- package/src/components/ShowcaseList/index.module.scss +80 -0
- package/src/components/ShowcaseList/index.tsx +39 -0
- package/src/components/ShowcaseList/useShowcases.ts +73 -0
- package/src/i18n/enUS.ts +8 -0
- package/src/i18n/zhCN.ts +8 -0
- package/docs/zh/community/index.mdx +0 -3
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,31 @@
|
|
1
1
|
# @modern-js/main-doc
|
2
2
|
|
3
|
+
## 2.17.0
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- @modern-js/builder-doc@2.17.0
|
8
|
+
|
9
|
+
## 2.16.0
|
10
|
+
|
11
|
+
### Patch Changes
|
12
|
+
|
13
|
+
- 63b3538: fix: dev server crashed when prepare api handler failed
|
14
|
+
|
15
|
+
fix: 修复更新 api server 报错导致 dev server 退出的问题
|
16
|
+
|
17
|
+
- fe92de6: fix(builder): browserslist config should not affect node bundles
|
18
|
+
|
19
|
+
fix(builder): 修复 browserslist 配置会对 node 产物生效的问题
|
20
|
+
|
21
|
+
- 4e876ab: chore: package.json include the monorepo-relative directory
|
22
|
+
|
23
|
+
chore: 在 package.json 中声明 monorepo 的子路径
|
24
|
+
|
25
|
+
- Updated dependencies [fe92de6]
|
26
|
+
- Updated dependencies [4e876ab]
|
27
|
+
- @modern-js/builder-doc@2.16.0
|
28
|
+
|
3
29
|
## 2.15.0
|
4
30
|
|
5
31
|
### Patch Changes
|
@@ -0,0 +1,268 @@
|
|
1
|
+
---
|
2
|
+
sidebar_position: 3
|
3
|
+
---
|
4
|
+
|
5
|
+
# Contributing Guide
|
6
|
+
|
7
|
+
Thanks for that you are interested in contributing to Modern.js. Before starting your contribution, please take a moment to read the following guidelines.
|
8
|
+
|
9
|
+
---
|
10
|
+
|
11
|
+
## Setup the Dev Environment
|
12
|
+
|
13
|
+
### Fork the Repo
|
14
|
+
|
15
|
+
[Fork](https://help.github.com/articles/fork-a-repo/) this repository to your
|
16
|
+
own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local.
|
17
|
+
|
18
|
+
### Install Node.js
|
19
|
+
|
20
|
+
We recommend using Node.js 16 or 18. You can check your currently used Node.js version with the following command:
|
21
|
+
|
22
|
+
```bash
|
23
|
+
node -v
|
24
|
+
#v16.18.0
|
25
|
+
```
|
26
|
+
|
27
|
+
If you do not have Node.js installed in your current environment, you can use [nvm](https://github.com/nvm-sh/nvm) or [fnm](https://github.com/Schniz/fnm) to install it.
|
28
|
+
|
29
|
+
Here is an example of how to install the Node.js 16 LTS version via nvm:
|
30
|
+
|
31
|
+
```bash
|
32
|
+
# Install the LTS version of Node.js 16
|
33
|
+
nvm install 16 --lts
|
34
|
+
|
35
|
+
# Make the newly installed Node.js 16 as the default version
|
36
|
+
nvm alias default 16
|
37
|
+
|
38
|
+
# Switch to the newly installed Node.js 16
|
39
|
+
nvm use 16
|
40
|
+
```
|
41
|
+
|
42
|
+
### Install pnpm
|
43
|
+
|
44
|
+
```sh
|
45
|
+
# Enable pnpm with corepack, only available on Node.js >= `v14.19.0`
|
46
|
+
corepack enable
|
47
|
+
```
|
48
|
+
|
49
|
+
### Install Dependencies
|
50
|
+
|
51
|
+
```sh
|
52
|
+
pnpm install
|
53
|
+
```
|
54
|
+
|
55
|
+
What this will do:
|
56
|
+
|
57
|
+
- Install all dependencies
|
58
|
+
- Create symlinks between packages in the monorepo
|
59
|
+
- Run the `prepare` script to build all packages (this will take some time, but is necessary to make ensure all packages are built)
|
60
|
+
|
61
|
+
> A full rebuild of all packages is generally not required after this. If a new feature you are developing requires an updated version of another package, it is usually sufficient to build the changed dependencies.
|
62
|
+
|
63
|
+
### Set Git Email
|
64
|
+
|
65
|
+
Please make sure you have your email set up in `<https://github.com/settings/emails>`. This will be needed later when you want to submit a pull request.
|
66
|
+
|
67
|
+
Check that your git client is already configured the email:
|
68
|
+
|
69
|
+
```sh
|
70
|
+
git config --list | grep email
|
71
|
+
```
|
72
|
+
|
73
|
+
Set the email to global config:
|
74
|
+
|
75
|
+
```sh
|
76
|
+
git config --global user.email "SOME_EMAIL@example.com"
|
77
|
+
```
|
78
|
+
|
79
|
+
Set the email for local repo:
|
80
|
+
|
81
|
+
```sh
|
82
|
+
git config user.email "SOME_EMAIL@example.com"
|
83
|
+
```
|
84
|
+
|
85
|
+
---
|
86
|
+
|
87
|
+
## Making Changes and Building
|
88
|
+
|
89
|
+
Once you have set up the local development environment in your forked repo, we can start development.
|
90
|
+
|
91
|
+
### Checkout A New Branch
|
92
|
+
|
93
|
+
It is recommended to develop on a new branch, as it will make things easier later when you submit a pull request:
|
94
|
+
|
95
|
+
```sh
|
96
|
+
git checkout -b MY_BRANCH_NAME
|
97
|
+
```
|
98
|
+
|
99
|
+
### Build the Package
|
100
|
+
|
101
|
+
To build the package you want to change, first open the package directory, then run the `build` command:
|
102
|
+
|
103
|
+
```sh
|
104
|
+
# Replace some-path with the path of the package you want to work on
|
105
|
+
cd ./packages/some-path
|
106
|
+
pnpm run build
|
107
|
+
```
|
108
|
+
|
109
|
+
Alternatively, you can build the package from the root directory of the repository using the `--filter` option:
|
110
|
+
|
111
|
+
```sh
|
112
|
+
pnpm run --filter @modern-js/some-package build
|
113
|
+
```
|
114
|
+
|
115
|
+
Build all packages:
|
116
|
+
|
117
|
+
```sh
|
118
|
+
pnpm run prepare
|
119
|
+
```
|
120
|
+
|
121
|
+
If you need to clean all `node_modules/*` in the project, run the `reset` command:
|
122
|
+
|
123
|
+
```sh
|
124
|
+
pnpm run reset
|
125
|
+
```
|
126
|
+
|
127
|
+
---
|
128
|
+
|
129
|
+
## Testing
|
130
|
+
|
131
|
+
### Add New Tests
|
132
|
+
|
133
|
+
If you've fixed a bug or added code that should be tested, then add some tests.
|
134
|
+
|
135
|
+
You can add unit test cases in the `<PACKAGE_DIR>/tests` folder. The test syntax is based on [Jest](https://jestjs.io/) and [Vitest](https://vitest.dev/).
|
136
|
+
|
137
|
+
### Run Unit Tests
|
138
|
+
|
139
|
+
Before submitting a pull request, it's important to make sure that the changes haven't introduced any regressions or bugs. You can run the unit tests for the project by executing the following command:
|
140
|
+
|
141
|
+
```sh
|
142
|
+
pnpm run test
|
143
|
+
```
|
144
|
+
|
145
|
+
Alternatively, you can run the unit tests of single package using the `--filter` option:
|
146
|
+
|
147
|
+
```sh
|
148
|
+
pnpm run --filter @modern-js/some-package test
|
149
|
+
```
|
150
|
+
|
151
|
+
### Run E2E Tests
|
152
|
+
|
153
|
+
In addition to the unit tests, the Modern.js also includes end-to-end (E2E) tests, which checks the functionality of the application as a whole.
|
154
|
+
|
155
|
+
You can run the `test:e2e` command to run the E2E tests:
|
156
|
+
|
157
|
+
```sh
|
158
|
+
pnpm run test:e2e
|
159
|
+
```
|
160
|
+
|
161
|
+
If you need to run a specified test, you can add keywords to filter:
|
162
|
+
|
163
|
+
```sh
|
164
|
+
# Only run test cases with the copy-assets keyword
|
165
|
+
npx jest copy-assets
|
166
|
+
```
|
167
|
+
|
168
|
+
---
|
169
|
+
|
170
|
+
## Linting
|
171
|
+
|
172
|
+
To help maintain consistency and readability of the codebase, we use a ESLint to lint the codes.
|
173
|
+
|
174
|
+
You can run the Linter by executing the following command:
|
175
|
+
|
176
|
+
```sh
|
177
|
+
pnpm run lint
|
178
|
+
```
|
179
|
+
|
180
|
+
---
|
181
|
+
|
182
|
+
## Documentation
|
183
|
+
|
184
|
+
Currently Modern.js provides documentation in English and Chinese. If you can use Chinese, please update both documents at the same time. Otherwise, just update the English documentation.
|
185
|
+
|
186
|
+
You can find all the documentation in the `packages/document` folder:
|
187
|
+
|
188
|
+
```bash
|
189
|
+
root
|
190
|
+
└─ packages
|
191
|
+
└─ document
|
192
|
+
├─ builder-doc # Documentation for Modern.js Builder
|
193
|
+
├─ doc-tools-doc # Documentation for Modern.js Doc
|
194
|
+
├─ main-doc # Documentation for Modern.js Framework
|
195
|
+
└─ module-doc # Documentation for Modern.js Module
|
196
|
+
```
|
197
|
+
|
198
|
+
This website is built with [Modern.js Doc](https://modernjs.dev/doc-tools), the document content can be written using markdown or mdx syntax. You can refer to the [Modern.js Doc Website](https://modernjs.dev/doc-tools) for detailed usage.
|
199
|
+
|
200
|
+
The source code of Modern.js Doc can be found in [this folder](https://github.com/web-infra-dev/modern.js/tree/main/packages/solutions/doc-tools).
|
201
|
+
|
202
|
+
---
|
203
|
+
|
204
|
+
## Submitting Changes
|
205
|
+
|
206
|
+
### Add a Changeset
|
207
|
+
|
208
|
+
Modern.js is using [Changesets](https://github.com/changesets/changesets) to manage the versioning and changelogs.
|
209
|
+
|
210
|
+
If you've changed some packages, you need add a new changeset for the changes. Please run `change` command to select the changed packages and add the changeset info.
|
211
|
+
|
212
|
+
```sh
|
213
|
+
pnpm run change
|
214
|
+
```
|
215
|
+
|
216
|
+
### Committing your Changes
|
217
|
+
|
218
|
+
Commit your changes to your forked repo, and [create a pull request](https://help.github.com/articles/creating-a-pull-request/).
|
219
|
+
|
220
|
+
### Format of PR titles
|
221
|
+
|
222
|
+
The format of PR titles follow Conventional Commits.
|
223
|
+
|
224
|
+
An example:
|
225
|
+
|
226
|
+
```
|
227
|
+
feat(plugin-swc): Add `xxx` config
|
228
|
+
^ ^ ^
|
229
|
+
| | |__ Subject
|
230
|
+
| |_______ Scope
|
231
|
+
|____________ Type
|
232
|
+
```
|
233
|
+
|
234
|
+
---
|
235
|
+
|
236
|
+
## Publishing
|
237
|
+
|
238
|
+
We use **Modern.js Monorepo Solution** to manage version and changelog.
|
239
|
+
|
240
|
+
Repository maintainers can publish a new version of all packages to npm.
|
241
|
+
|
242
|
+
Here are the steps to publish (we generally use CI for releases and avoid publishing npm packages locally):
|
243
|
+
|
244
|
+
1. Pull latest code from the `main` branch.
|
245
|
+
2. Install:
|
246
|
+
|
247
|
+
```sh
|
248
|
+
pnpm i
|
249
|
+
```
|
250
|
+
|
251
|
+
3. Build packages:
|
252
|
+
|
253
|
+
```sh
|
254
|
+
pnpm run prepare
|
255
|
+
```
|
256
|
+
|
257
|
+
4. Bump version:
|
258
|
+
|
259
|
+
```sh
|
260
|
+
pnpm run bump
|
261
|
+
```
|
262
|
+
|
263
|
+
5. Commit the version change.
|
264
|
+
|
265
|
+
```sh
|
266
|
+
git add .
|
267
|
+
git commit -m "Release va.b.c"
|
268
|
+
```
|
@@ -0,0 +1,31 @@
|
|
1
|
+
---
|
2
|
+
sidebar_position: 2
|
3
|
+
---
|
4
|
+
|
5
|
+
# Releases
|
6
|
+
|
7
|
+
## Changelog
|
8
|
+
|
9
|
+
Please visit [GitHub - Releases](https://github.com/web-infra-dev/modern.js/releases) to see what has changed with each release of Modern.js.
|
10
|
+
|
11
|
+
## Version Specification
|
12
|
+
|
13
|
+
Modern.js follows the [Semantic Versioning](https://semver.org) specification.
|
14
|
+
|
15
|
+
- Major version: Contains incompatible API changes.
|
16
|
+
- Minor version: Contains backward compatible functional changes.
|
17
|
+
- Patch version: Contains backwards compatible bug fixes
|
18
|
+
|
19
|
+
## Release Cycle
|
20
|
+
|
21
|
+
- Modern.js generally releases an official release every Thursday.
|
22
|
+
- If critical bugs appear, we will release a revised version on the same day.
|
23
|
+
- We expect to keep Modern.js v2 stable and compatible, there are currently no plans to release the next major version.
|
24
|
+
|
25
|
+
## Version Upgrade
|
26
|
+
|
27
|
+
When you need to upgrade the Modern.js version in your project, you can use the `modern upgrade` command, refer to [Upgrade](/guides/get-started/upgrade).
|
28
|
+
|
29
|
+
```bash
|
30
|
+
npx modern upgrade
|
31
|
+
```
|
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
sidebar_position: 0
|
3
|
+
---
|
4
|
+
|
5
|
+
# Showcase
|
6
|
+
|
7
|
+
Welcome to the Modern.js showcase page! Here, we present a collection of websites that have been built using Modern.js.
|
8
|
+
|
9
|
+
If you have built a website using Modern.js, we would love for you to share it with the community. Simply reply to the GitHub discussion thread with a link to your website. We will collect content on a regular basis and display it on the current page.
|
10
|
+
|
11
|
+
## The Cases
|
12
|
+
|
13
|
+
import { ShowcaseList } from '@site/src/components/ShowcaseList';
|
14
|
+
|
15
|
+
<ShowcaseList />
|
@@ -0,0 +1,29 @@
|
|
1
|
+
---
|
2
|
+
sidebar_position: 1
|
3
|
+
---
|
4
|
+
|
5
|
+
# Meet the Team
|
6
|
+
|
7
|
+
The development of Modern.js is driven by ByteDance's Modern.js team and community contributors.
|
8
|
+
|
9
|
+
## Core Team Members
|
10
|
+
|
11
|
+
The Modern.js core team members:
|
12
|
+
|
13
|
+
import { RandomMemberList } from '@site/src/components/RandomMemberList';
|
14
|
+
|
15
|
+
<RandomMemberList />
|
16
|
+
|
17
|
+
## All Contributors
|
18
|
+
|
19
|
+
Thanks to the following friends for their contributions to Modern.js:
|
20
|
+
|
21
|
+
<a
|
22
|
+
href="https://github.com/web-infra-dev/modern.js/graphs/contributors"
|
23
|
+
style={{ display: 'block', marginTop: 24 }}
|
24
|
+
>
|
25
|
+
<img
|
26
|
+
src="https://opencollective.com/modernjs/contributors.svg?width=890&button=false"
|
27
|
+
alt="contributors"
|
28
|
+
/>
|
29
|
+
</a>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
---
|
2
|
+
sidebar_label: disableSvgr
|
3
|
+
---
|
4
|
+
|
5
|
+
# output.disableSvgr
|
6
|
+
|
7
|
+
:::tip
|
8
|
+
This config is provided by Modern.js Builder, more detail can see [output.disableSvgr](https://modernjs.dev/builder/en/api/config-output.html#outputdisablesvgr).
|
9
|
+
:::
|
10
|
+
|
11
|
+
import Main from '@modern-js/builder-doc/docs/en/config/output/disableSvgr.md';
|
12
|
+
|
13
|
+
<Main />
|
@@ -0,0 +1,267 @@
|
|
1
|
+
---
|
2
|
+
sidebar_position: 3
|
3
|
+
---
|
4
|
+
|
5
|
+
# 贡献指南
|
6
|
+
|
7
|
+
感谢你有兴趣为 Modern.js 做贡献!在开始你的贡献之前,请花几分钟时间阅读以下指南。
|
8
|
+
|
9
|
+
---
|
10
|
+
|
11
|
+
## 设置开发环境
|
12
|
+
|
13
|
+
### Fork 仓库
|
14
|
+
|
15
|
+
[Fork](https://help.github.com/articles/fork-a-repo/) Modern.js 仓库到你的 GitHub 账户,然后 [clone](https://help.github.com/articles/cloning-a-repository/) 到你的本地。
|
16
|
+
|
17
|
+
### 安装 Node.js
|
18
|
+
|
19
|
+
我们推荐使用 Node.js 16 或 18。你可以通过以下命令查看当前使用的 Node.js 版本:
|
20
|
+
|
21
|
+
```bash
|
22
|
+
node -v
|
23
|
+
#v16.18.0
|
24
|
+
```
|
25
|
+
|
26
|
+
如果你当前环境没有安装 Node.js,可以使用 [nvm](https://github.com/nvm-sh/nvm)或者 [fnm](https://github.com/Schniz/fnm) 来安装它。
|
27
|
+
|
28
|
+
以下是如何通过 nvm 安装 Node.js 16 LTS 版本的示例:
|
29
|
+
|
30
|
+
```bash
|
31
|
+
# 安装 Node.js 16 的 LTS 版本
|
32
|
+
nvm install 16 --lts
|
33
|
+
|
34
|
+
# 将新安装的 Node.js 16 设为默认版本
|
35
|
+
nvm alias default 16
|
36
|
+
|
37
|
+
# 切换到新安装的 Node.js 16
|
38
|
+
nvm use 16
|
39
|
+
```
|
40
|
+
|
41
|
+
### 安装 pnpm
|
42
|
+
|
43
|
+
```bash
|
44
|
+
# 使用 corepack 启用 pnpm,仅在 Node.js >= `v14.19.0` 上可用
|
45
|
+
corepack enable
|
46
|
+
```
|
47
|
+
|
48
|
+
### 安装依赖
|
49
|
+
|
50
|
+
```sh
|
51
|
+
pnpm install
|
52
|
+
```
|
53
|
+
|
54
|
+
这将完成:
|
55
|
+
|
56
|
+
- 安装所有依赖项
|
57
|
+
- 在 monorepo 中的 packages 之间创建 symlinks
|
58
|
+
- 运行 `prepare` 脚本来构建所有包(这将需要一些时间,但可以保证所有包都被正确构建)
|
59
|
+
|
60
|
+
> 在此之后,你通常不需要一次性构建所有 packages。如果你正在开发的新功能依赖另一个 package 的最新代码,通常只构建指定的 package 就足够了。
|
61
|
+
|
62
|
+
### 设置 Git 邮箱
|
63
|
+
|
64
|
+
请确保在 `<https://github.com/settings/emails>` 中设置了电子邮件,当你提交 Pull Request 时将需要它。
|
65
|
+
|
66
|
+
检查你的 git 客户端是否已配置邮箱:
|
67
|
+
|
68
|
+
```sh
|
69
|
+
git config --list | grep email
|
70
|
+
```
|
71
|
+
|
72
|
+
全局设置邮箱:
|
73
|
+
|
74
|
+
```sh
|
75
|
+
git config --global user.email "SOME_EMAIL@example.com"
|
76
|
+
```
|
77
|
+
|
78
|
+
针对本地仓库设置邮箱:
|
79
|
+
|
80
|
+
```sh
|
81
|
+
git config user.email "SOME_EMAIL@example.com"
|
82
|
+
```
|
83
|
+
|
84
|
+
---
|
85
|
+
|
86
|
+
## 代码变更和构建
|
87
|
+
|
88
|
+
当你在 fork 的仓库中设置完本地开发环境后,我们就可以开始开发了。
|
89
|
+
|
90
|
+
### 创建一个新分支
|
91
|
+
|
92
|
+
建议在一个新的分支上开发,这样便于后续提交 pull request:
|
93
|
+
|
94
|
+
```sh
|
95
|
+
git checkout -b MY_BRANCH_NAME
|
96
|
+
```
|
97
|
+
|
98
|
+
### 构建 Package
|
99
|
+
|
100
|
+
要构建你要更改的 package,首先打开 package 目录,然后执行 `build` 命令:
|
101
|
+
|
102
|
+
```sh
|
103
|
+
# 将 some-path 替换为你要构建的 package 的路径
|
104
|
+
cd ./packages/some-package
|
105
|
+
pnpm run build
|
106
|
+
```
|
107
|
+
|
108
|
+
此外,你可以使用 `--filter` 选项从仓库根目录来构建指定的 package:
|
109
|
+
|
110
|
+
```sh
|
111
|
+
pnpm run --filter @modern-js/some-package build
|
112
|
+
```
|
113
|
+
|
114
|
+
构建所有包:
|
115
|
+
|
116
|
+
```sh
|
117
|
+
pnpm run prepare
|
118
|
+
```
|
119
|
+
|
120
|
+
如果你需要清理项目中的所有 `node_modules/*`,执行 `reset` 命令:
|
121
|
+
|
122
|
+
```sh
|
123
|
+
pnpm 运行重置
|
124
|
+
```
|
125
|
+
|
126
|
+
---
|
127
|
+
|
128
|
+
## 测试
|
129
|
+
|
130
|
+
### 添加新测试
|
131
|
+
|
132
|
+
如果你进行了 bugfix,或者添加了需要测试的代码,请添加一些测试代码。
|
133
|
+
|
134
|
+
你可以在 `<PACKAGE_DIR>/tests` 文件夹中添加单元测试用例。测试语法基于 [Jest](https://jestjs.io/) 和 [Vitest](https://vitest.dev/)。
|
135
|
+
|
136
|
+
### 运行单元测试
|
137
|
+
|
138
|
+
在提交 pull request 之前,为了确保本次变更没有引入缺陷,你可以通过执行以下命令运行单元测试:
|
139
|
+
|
140
|
+
```sh
|
141
|
+
pnpm run test
|
142
|
+
```
|
143
|
+
|
144
|
+
你也可以使用 `--filter` 选项运行单个包的单元测试:
|
145
|
+
|
146
|
+
```sh
|
147
|
+
pnpm run --filter @modern-js/some-package test
|
148
|
+
```
|
149
|
+
|
150
|
+
### 运行 E2E 测试
|
151
|
+
|
152
|
+
除了单元测试之外,Modern.js 仓库还包括端到端 (E2E) 测试,用于检查整个应用程序的功能。
|
153
|
+
|
154
|
+
你可以执行 `test:e2e` 命令来运行 E2E 测试:
|
155
|
+
|
156
|
+
```sh
|
157
|
+
pnpm run test:e2e
|
158
|
+
```
|
159
|
+
|
160
|
+
如果需要运行指定的测试,可以添加关键字进行过滤:
|
161
|
+
|
162
|
+
```sh
|
163
|
+
# 只运行带有 copy-assets 关键词的测试用例
|
164
|
+
npx jest copy-assets
|
165
|
+
```
|
166
|
+
|
167
|
+
---
|
168
|
+
|
169
|
+
## Linting
|
170
|
+
|
171
|
+
为了帮助保持代码风格的一致性和可读性,我们使用 ESLint 对代码进行校验。
|
172
|
+
|
173
|
+
你可以执行以下命令来运行 Linter:
|
174
|
+
|
175
|
+
```sh
|
176
|
+
pnpm run lint
|
177
|
+
```
|
178
|
+
|
179
|
+
---
|
180
|
+
|
181
|
+
## 文档
|
182
|
+
|
183
|
+
目前 Modern.js 提供英文和中文文档。如果你熟悉中文,请同时更新中英文文档。否则,只需更新英文文档即可。
|
184
|
+
|
185
|
+
你可以在 `packages/document` 文件夹中找到所有文档:
|
186
|
+
|
187
|
+
```sh
|
188
|
+
root
|
189
|
+
└─ packages
|
190
|
+
└─ document
|
191
|
+
├─ builder-doc # Modern.js Builder 文档
|
192
|
+
├─ doc-tools-doc # Modern.js Doc 文档
|
193
|
+
├─ main-doc # Modern.js Framework 文档
|
194
|
+
└─ module-doc # Modern.js Module 文档
|
195
|
+
```
|
196
|
+
|
197
|
+
文档站使用 [Modern.js Doc](https://modernjs.dev/doc-tools) 构建,文档内容可以使用 markdown 或 mdx 语法编写。详细使用方法可以参考 [Modern.js Doc 文档](https://modernjs.dev/doc-tools)。
|
198
|
+
|
199
|
+
Modern.js Doc 的源代码可以在 [这个文件夹](https://github.com/web-infra-dev/modern.js/tree/main/packages/solutions/doc-tools) 中找到。
|
200
|
+
|
201
|
+
---
|
202
|
+
|
203
|
+
## 提交变更
|
204
|
+
|
205
|
+
### 添加 Changeset
|
206
|
+
|
207
|
+
Modern.js 使用 [Changesets](https://github.com/changesets/changesets) 来管理版本和 Changelog。
|
208
|
+
|
209
|
+
如果你修改了一些包,则需要为本次变更添加一个新的变更集。请运行 `change` 命令来选择更改的包并添加 changeset 信息。
|
210
|
+
|
211
|
+
```sh
|
212
|
+
pnpm run change
|
213
|
+
```
|
214
|
+
|
215
|
+
### 提交你的变更
|
216
|
+
|
217
|
+
提交变更到 fork 后的仓库,并 [创建 pull request](https://help.github.com/articles/creating-a-pull-request/)。
|
218
|
+
|
219
|
+
### PR 标题格式
|
220
|
+
|
221
|
+
PR 标题的格式遵循 Conventional Commits。
|
222
|
+
|
223
|
+
一个例子:
|
224
|
+
|
225
|
+
```
|
226
|
+
feat(plugin-swc): 添加 `xxx` 配置项
|
227
|
+
^ ^ ^
|
228
|
+
| | |__ 主题
|
229
|
+
| |_______ 范围
|
230
|
+
|____________ 类型
|
231
|
+
```
|
232
|
+
|
233
|
+
---
|
234
|
+
|
235
|
+
## 发布
|
236
|
+
|
237
|
+
Modern.js 使用 [Changesets](https://github.com/changesets/changesets) 来管理版本和 changelog。
|
238
|
+
|
239
|
+
仓库的维护者可以将所有包的新版本发布到 npm。
|
240
|
+
|
241
|
+
以下是发布的步骤(我们通常使用 CI 进行发布,并避免在本地发布 npm 包):
|
242
|
+
|
243
|
+
1. 拉取 `main` 分支的最新代码。
|
244
|
+
2. 安装依赖:
|
245
|
+
|
246
|
+
```sh
|
247
|
+
pnpm i
|
248
|
+
```
|
249
|
+
|
250
|
+
3. 构建 packages:
|
251
|
+
|
252
|
+
```sh
|
253
|
+
pnpm prepare
|
254
|
+
```
|
255
|
+
|
256
|
+
4. 升级版本:
|
257
|
+
|
258
|
+
```sh
|
259
|
+
pnpm run bump
|
260
|
+
```
|
261
|
+
|
262
|
+
5. 提交版本变更。
|
263
|
+
|
264
|
+
```sh
|
265
|
+
git add .
|
266
|
+
git commit -m "Release va.b.c"
|
267
|
+
```
|
@@ -0,0 +1,31 @@
|
|
1
|
+
---
|
2
|
+
sidebar_position: 2
|
3
|
+
---
|
4
|
+
|
5
|
+
# 版本发布
|
6
|
+
|
7
|
+
## 更新日志
|
8
|
+
|
9
|
+
请访问 [GitHub - Release](https://github.com/web-infra-dev/modern.js/releases) 来了解 Modern.js 每个版本的变更内容。
|
10
|
+
|
11
|
+
## 版本规范
|
12
|
+
|
13
|
+
Modern.js 遵循 [Semantic Versioning](https://semver.org/lang/zh-CN/) 语义化版本规范。
|
14
|
+
|
15
|
+
- 主版本号:包含不兼容的 API 变更。
|
16
|
+
- 次版本号:包含向下兼容的功能性变更。
|
17
|
+
- 修订号:包含向下兼容的问题修正。
|
18
|
+
|
19
|
+
## 发版周期
|
20
|
+
|
21
|
+
- Modern.js 通常在每周四发布一个正式版本。
|
22
|
+
- 当出现较为严重的问题时,我们会在当天发布修订版本。
|
23
|
+
- 我们期望保持 Modern.js v2 的稳定和兼容,目前没有发布下一个 Major 版本的计划。
|
24
|
+
|
25
|
+
## 版本升级
|
26
|
+
|
27
|
+
当你需要升级项目中的 Modern.js 版本时,可以使用 `modern upgrade` 命令,参考 [升级](/guides/get-started/upgrade)。
|
28
|
+
|
29
|
+
```bash
|
30
|
+
npx modern upgrade
|
31
|
+
```
|
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
sidebar_position: 0
|
3
|
+
---
|
4
|
+
|
5
|
+
# 案例展示
|
6
|
+
|
7
|
+
欢迎来到 Modern.js 的案例展示页面!在这里,我们展示了一些基于 Modern.js 所实现的网站。
|
8
|
+
|
9
|
+
如果你使用 Modern.js 构建了一个网站,欢迎你与社区分享它。只需回复 [GitHub 讨论贴](https://github.com/web-infra-dev/modern.js/discussions/3554) 并附上你网站的链接即可。我们会定期收集内容,并将它们展示在当前页面。
|
10
|
+
|
11
|
+
## 案例
|
12
|
+
|
13
|
+
import { ShowcaseList } from '@site/src/components/ShowcaseList';
|
14
|
+
|
15
|
+
<ShowcaseList />
|
@@ -0,0 +1,29 @@
|
|
1
|
+
---
|
2
|
+
sidebar_position: 1
|
3
|
+
---
|
4
|
+
|
5
|
+
# 团队
|
6
|
+
|
7
|
+
Modern.js 的开发由字节跳动的 Modern.js 团队和社区贡献者驱动。
|
8
|
+
|
9
|
+
## 核心团队成员
|
10
|
+
|
11
|
+
以下是 Modern.js 团队的核心成员:
|
12
|
+
|
13
|
+
import { RandomMemberList } from '@site/src/components/RandomMemberList';
|
14
|
+
|
15
|
+
<RandomMemberList />
|
16
|
+
|
17
|
+
## 所有贡献者
|
18
|
+
|
19
|
+
感谢以下伙伴们为 Modern.js 做出的贡献:
|
20
|
+
|
21
|
+
<a
|
22
|
+
href="https://github.com/web-infra-dev/modern.js/graphs/contributors"
|
23
|
+
style={{ display: 'block', marginTop: 24 }}
|
24
|
+
>
|
25
|
+
<img
|
26
|
+
src="https://opencollective.com/modernjs/contributors.svg?width=890&button=false"
|
27
|
+
alt="contributors"
|
28
|
+
/>
|
29
|
+
</a>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
---
|
2
|
+
sidebar_label: disableSvgr
|
3
|
+
---
|
4
|
+
|
5
|
+
# output.disableSvgr
|
6
|
+
|
7
|
+
:::tip
|
8
|
+
该配置由 Modern.js Builder 提供,更多信息可参考 [output.disableSvgr](https://modernjs.dev/builder/api/config-output.html#outputdisablesvgr)。
|
9
|
+
:::
|
10
|
+
|
11
|
+
import Main from '@modern-js/builder-doc/docs/zh/config/output/disableSvgr.md';
|
12
|
+
|
13
|
+
<Main />
|
package/modern.config.ts
CHANGED
@@ -8,6 +8,7 @@ const rootCategories = [
|
|
8
8
|
'apis/app',
|
9
9
|
'configure/app',
|
10
10
|
'blog',
|
11
|
+
'about',
|
11
12
|
];
|
12
13
|
|
13
14
|
const { version } = require('./package.json');
|
@@ -45,6 +46,11 @@ const getNavbar = (lang: string): NavItem[] => {
|
|
45
46
|
link: getLink('/blog/index'),
|
46
47
|
activeMatch: '/blog/',
|
47
48
|
},
|
49
|
+
{
|
50
|
+
text: getText('关于', 'About'),
|
51
|
+
link: getLink('/about/showcase'),
|
52
|
+
activeMatch: '/about/',
|
53
|
+
},
|
48
54
|
{
|
49
55
|
text: `v${version}`,
|
50
56
|
items: [
|
package/package.json
CHANGED
@@ -3,7 +3,11 @@
|
|
3
3
|
"description": "Documentation of modern.js framework",
|
4
4
|
"homepage": "https://modernjs.dev",
|
5
5
|
"bugs": "https://github.com/web-infra-dev/modern.js/issues",
|
6
|
-
"repository":
|
6
|
+
"repository": {
|
7
|
+
"type": "git",
|
8
|
+
"url": "https://github.com/web-infra-dev/modern.js",
|
9
|
+
"directory": "packages/document/main-doc"
|
10
|
+
},
|
7
11
|
"license": "MIT",
|
8
12
|
"keywords": [
|
9
13
|
"react",
|
@@ -11,13 +15,13 @@
|
|
11
15
|
"modern",
|
12
16
|
"modern.js"
|
13
17
|
],
|
14
|
-
"version": "2.
|
18
|
+
"version": "2.17.0",
|
15
19
|
"publishConfig": {
|
16
20
|
"registry": "https://registry.npmjs.org/",
|
17
21
|
"access": "public"
|
18
22
|
},
|
19
23
|
"peerDependencies": {
|
20
|
-
"@modern-js/builder-doc": "^2.
|
24
|
+
"@modern-js/builder-doc": "^2.17.0"
|
21
25
|
},
|
22
26
|
"devDependencies": {
|
23
27
|
"classnames": "^2",
|
@@ -29,9 +33,9 @@
|
|
29
33
|
"fs-extra": "^10",
|
30
34
|
"@types/node": "^16",
|
31
35
|
"@types/fs-extra": "^9",
|
32
|
-
"@modern-js/builder-doc": "2.
|
33
|
-
"@modern-js/doc-tools": "2.
|
34
|
-
"@modern-js/doc-plugin-auto-sidebar": "2.
|
36
|
+
"@modern-js/builder-doc": "2.17.0",
|
37
|
+
"@modern-js/doc-tools": "2.17.0",
|
38
|
+
"@modern-js/doc-plugin-auto-sidebar": "2.17.0"
|
35
39
|
},
|
36
40
|
"scripts": {
|
37
41
|
"dev": "modern dev",
|
@@ -0,0 +1,35 @@
|
|
1
|
+
.wrapper {
|
2
|
+
display: flex;
|
3
|
+
flex-wrap: wrap;
|
4
|
+
align-items: center;
|
5
|
+
}
|
6
|
+
|
7
|
+
.link {
|
8
|
+
display: flex;
|
9
|
+
align-items: center;
|
10
|
+
justify-content: center;
|
11
|
+
flex-direction: column;
|
12
|
+
width: 20%;
|
13
|
+
max-width: 20%;
|
14
|
+
margin: 24px 0;
|
15
|
+
|
16
|
+
&:hover {
|
17
|
+
.avatar {
|
18
|
+
transform: scale(1.15);
|
19
|
+
}
|
20
|
+
}
|
21
|
+
}
|
22
|
+
|
23
|
+
.avatar {
|
24
|
+
width: 48px;
|
25
|
+
height: 48px;
|
26
|
+
border-radius: 999px;
|
27
|
+
transition: all 0.2s ease-in-out;
|
28
|
+
background-color: #f8f8f8;
|
29
|
+
}
|
30
|
+
|
31
|
+
.name {
|
32
|
+
margin-top: 12px;
|
33
|
+
font-size: 13px;
|
34
|
+
color: rgb(0, 53, 67);
|
35
|
+
}
|
@@ -0,0 +1,122 @@
|
|
1
|
+
import { NoSSR } from '@modern-js/doc-tools/runtime';
|
2
|
+
import style from './index.module.scss';
|
3
|
+
|
4
|
+
interface Member {
|
5
|
+
id: string;
|
6
|
+
avatar: string;
|
7
|
+
// The display name, if not set, use id instead
|
8
|
+
name?: string;
|
9
|
+
}
|
10
|
+
|
11
|
+
const MEMBERS: Member[] = [
|
12
|
+
{
|
13
|
+
id: '10Derozan',
|
14
|
+
avatar: 'https://avatars.githubusercontent.com/u/50694858?s=120&v=4',
|
15
|
+
},
|
16
|
+
{
|
17
|
+
id: '2heal1',
|
18
|
+
avatar: 'https://avatars.githubusercontent.com/u/41466093?s=120&v=4',
|
19
|
+
},
|
20
|
+
{
|
21
|
+
id: '9aoy',
|
22
|
+
avatar: 'https://avatars.githubusercontent.com/u/22373761?s=120&v=4',
|
23
|
+
},
|
24
|
+
{
|
25
|
+
id: 'Asuka109',
|
26
|
+
avatar: 'https://avatars.githubusercontent.com/u/18379948?s=120&v=4',
|
27
|
+
},
|
28
|
+
{
|
29
|
+
id: 'caohuilin',
|
30
|
+
avatar: 'https://avatars.githubusercontent.com/u/12605189?s=120&v=4',
|
31
|
+
},
|
32
|
+
{
|
33
|
+
id: 'chenjiahan',
|
34
|
+
avatar: 'https://avatars.githubusercontent.com/u/7237365?s=120&v=4',
|
35
|
+
},
|
36
|
+
{
|
37
|
+
id: 'clChenLiang',
|
38
|
+
avatar: 'https://avatars.githubusercontent.com/u/13596193?s=120&v=4',
|
39
|
+
},
|
40
|
+
{
|
41
|
+
id: 'danpeen',
|
42
|
+
avatar: 'https://avatars.githubusercontent.com/u/18045417?s=120&v=4',
|
43
|
+
},
|
44
|
+
{
|
45
|
+
id: 'GiveMe-A-Name',
|
46
|
+
avatar: 'https://avatars.githubusercontent.com/u/58852732?s=120&v=4',
|
47
|
+
},
|
48
|
+
{
|
49
|
+
id: 'jkzing',
|
50
|
+
avatar: 'https://avatars.githubusercontent.com/u/2851517?s=120&v=4',
|
51
|
+
},
|
52
|
+
{
|
53
|
+
id: 'JSerFeng',
|
54
|
+
avatar: 'https://avatars.githubusercontent.com/u/57202839?s=120&v=4',
|
55
|
+
},
|
56
|
+
{
|
57
|
+
id: 'KyrieLii',
|
58
|
+
avatar: 'https://avatars.githubusercontent.com/u/16858738?s=120&v=4',
|
59
|
+
},
|
60
|
+
{
|
61
|
+
id: 'nyqykk',
|
62
|
+
avatar: 'https://avatars.githubusercontent.com/u/65393845?s=120&v=4',
|
63
|
+
},
|
64
|
+
{
|
65
|
+
id: 'sanyuan0704',
|
66
|
+
avatar: 'https://avatars.githubusercontent.com/u/39261479?s=120&v=4',
|
67
|
+
},
|
68
|
+
{
|
69
|
+
id: 'targeral',
|
70
|
+
avatar: 'https://avatars.githubusercontent.com/u/9037723?s=120&v=4',
|
71
|
+
},
|
72
|
+
{
|
73
|
+
id: 'xuchaobei',
|
74
|
+
avatar: 'https://avatars.githubusercontent.com/u/5110783?s=120&v=4',
|
75
|
+
},
|
76
|
+
{
|
77
|
+
id: 'xyoscer',
|
78
|
+
avatar: 'https://avatars.githubusercontent.com/u/16360717?s=120&v=4',
|
79
|
+
},
|
80
|
+
{
|
81
|
+
id: 'yimingjfe',
|
82
|
+
avatar: 'https://avatars.githubusercontent.com/u/10381581?s=120&v=4',
|
83
|
+
},
|
84
|
+
{
|
85
|
+
id: 'zhoushaw',
|
86
|
+
avatar: 'https://avatars.githubusercontent.com/u/27547179?s=120&v=4',
|
87
|
+
},
|
88
|
+
{
|
89
|
+
id: 'zllkjc',
|
90
|
+
avatar: 'https://avatars.githubusercontent.com/u/68810266?s=120&v=4',
|
91
|
+
},
|
92
|
+
{
|
93
|
+
id: 'zoolsher',
|
94
|
+
avatar: 'https://avatars.githubusercontent.com/u/9161085?s=120&v=4',
|
95
|
+
},
|
96
|
+
];
|
97
|
+
|
98
|
+
export const RandomMemberList = () => {
|
99
|
+
const randomList = MEMBERS.sort(() => Math.random() - 0.5);
|
100
|
+
|
101
|
+
return (
|
102
|
+
<NoSSR>
|
103
|
+
<div className={style.wrapper}>
|
104
|
+
{randomList.map(item => (
|
105
|
+
<a
|
106
|
+
className={style.link}
|
107
|
+
href={`https://github.com/${item.id}`}
|
108
|
+
target="_blank"
|
109
|
+
rel="nofollow"
|
110
|
+
key={item.id}
|
111
|
+
style={{
|
112
|
+
border: 'none',
|
113
|
+
}}
|
114
|
+
>
|
115
|
+
<img className={style.avatar} src={item.avatar} />
|
116
|
+
<span className={style.name}>{item.name || item.id}</span>
|
117
|
+
</a>
|
118
|
+
))}
|
119
|
+
</div>
|
120
|
+
</NoSSR>
|
121
|
+
);
|
122
|
+
};
|
@@ -0,0 +1,80 @@
|
|
1
|
+
.wrapper {
|
2
|
+
display: grid;
|
3
|
+
grid-template-columns: repeat(2, 1fr);
|
4
|
+
grid-gap: 32px;
|
5
|
+
}
|
6
|
+
|
7
|
+
@media (max-width: 1100px) {
|
8
|
+
.wrapper {
|
9
|
+
grid-template-columns: repeat(1, 1fr);
|
10
|
+
}
|
11
|
+
}
|
12
|
+
|
13
|
+
.card {
|
14
|
+
display: block;
|
15
|
+
cursor: pointer;
|
16
|
+
age-break-inside: avoid;
|
17
|
+
break-inside: avoid;
|
18
|
+
border-radius: 20px;
|
19
|
+
overflow: hidden;
|
20
|
+
transition: 0.15s ease-in;
|
21
|
+
border: 1px solid var(--modern-c-divider-light);
|
22
|
+
|
23
|
+
&:hover {
|
24
|
+
border-color: var(--modern-c-brand);
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
.preview {
|
29
|
+
display: block;
|
30
|
+
width: 100%;
|
31
|
+
aspect-ratio: 1.84;
|
32
|
+
object-fit: contain;
|
33
|
+
cursor: pointer;
|
34
|
+
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
|
35
|
+
pointer-events: none;
|
36
|
+
background-color: var(--modern-c-bg-soft);
|
37
|
+
}
|
38
|
+
|
39
|
+
.bottom {
|
40
|
+
padding: 12px 18px 14px;
|
41
|
+
}
|
42
|
+
|
43
|
+
.name {
|
44
|
+
display: flex;
|
45
|
+
justify-content: space-between;
|
46
|
+
font-weight: 600;
|
47
|
+
font-size: 17px;
|
48
|
+
line-height: 28px;
|
49
|
+
color: var(--modern-c-text-1);
|
50
|
+
}
|
51
|
+
|
52
|
+
.type {
|
53
|
+
display: block;
|
54
|
+
color: #fff;
|
55
|
+
font-size: 12px;
|
56
|
+
background: -webkit-linear-gradient(
|
57
|
+
305deg,
|
58
|
+
hsl(166deg, 77%, 43%) 10%,
|
59
|
+
hsl(198deg, 100%, 50%)
|
60
|
+
);
|
61
|
+
background-clip: text;
|
62
|
+
-webkit-background-clip: text;
|
63
|
+
-webkit-text-fill-color: transparent;
|
64
|
+
}
|
65
|
+
|
66
|
+
:global(.dark) .type {
|
67
|
+
background: -webkit-linear-gradient(
|
68
|
+
305deg,
|
69
|
+
hsl(166deg, 77%, 53%) 10%,
|
70
|
+
hsl(198deg, 100%, 60%)
|
71
|
+
);
|
72
|
+
background-clip: text;
|
73
|
+
-webkit-background-clip: text;
|
74
|
+
}
|
75
|
+
|
76
|
+
.domain {
|
77
|
+
font-size: 13px;
|
78
|
+
line-height: 24px;
|
79
|
+
color: var(--modern-c-text-2);
|
80
|
+
}
|
@@ -0,0 +1,39 @@
|
|
1
|
+
import { useShowcases } from './useShowcases';
|
2
|
+
import styles from './index.module.scss';
|
3
|
+
|
4
|
+
const getDomain = (url: string) => new URL(url).hostname;
|
5
|
+
|
6
|
+
const TYPE_MAP = {
|
7
|
+
doc: 'Modern.js Doc',
|
8
|
+
module: 'Modern.js Module',
|
9
|
+
builder: 'Modern.js Builder',
|
10
|
+
framework: 'Modern.js Framework',
|
11
|
+
};
|
12
|
+
|
13
|
+
export const ShowcaseList = () => {
|
14
|
+
const showcases = useShowcases();
|
15
|
+
|
16
|
+
return (
|
17
|
+
<div className={styles.wrapper}>
|
18
|
+
{showcases.map(item => {
|
19
|
+
return (
|
20
|
+
<a
|
21
|
+
key={item.url}
|
22
|
+
href={item.url}
|
23
|
+
target="_blank"
|
24
|
+
className={styles.card}
|
25
|
+
>
|
26
|
+
<img src={item.preview} className={styles.preview} />
|
27
|
+
<div className={styles.bottom}>
|
28
|
+
<div className={styles.name}>
|
29
|
+
{item.name}
|
30
|
+
<span className={styles.type}>{TYPE_MAP[item.type]}</span>
|
31
|
+
</div>
|
32
|
+
<div className={styles.domain}>{getDomain(item.url)}</div>
|
33
|
+
</div>
|
34
|
+
</a>
|
35
|
+
);
|
36
|
+
})}
|
37
|
+
</div>
|
38
|
+
);
|
39
|
+
};
|
@@ -0,0 +1,73 @@
|
|
1
|
+
import { useI18n } from '../../i18n';
|
2
|
+
|
3
|
+
export type ShowcaseType = 'framework' | 'builder' | 'doc' | 'module';
|
4
|
+
|
5
|
+
export type ShowcaseItem = {
|
6
|
+
url: string;
|
7
|
+
name: string;
|
8
|
+
preview: string;
|
9
|
+
type: ShowcaseType;
|
10
|
+
};
|
11
|
+
|
12
|
+
export const useShowcases = (): ShowcaseItem[] => {
|
13
|
+
const t = useI18n();
|
14
|
+
|
15
|
+
return [
|
16
|
+
{
|
17
|
+
name: t('volctrans'),
|
18
|
+
url: 'https://translate.volcengine.com/',
|
19
|
+
preview:
|
20
|
+
'https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/showcase/volctrans-0424.jpeg',
|
21
|
+
type: 'framework',
|
22
|
+
},
|
23
|
+
{
|
24
|
+
name: t('writingo'),
|
25
|
+
url: 'https://writingo.net/',
|
26
|
+
preview:
|
27
|
+
'https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/showcase/writingo-0424.jpeg',
|
28
|
+
type: 'framework',
|
29
|
+
},
|
30
|
+
{
|
31
|
+
name: 'Rspack',
|
32
|
+
url: 'https://rspack.dev/',
|
33
|
+
preview:
|
34
|
+
'https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/showcase/rspack-0424.jpeg',
|
35
|
+
type: 'doc',
|
36
|
+
},
|
37
|
+
{
|
38
|
+
name: 'Modern.js',
|
39
|
+
url: 'https://modernjs.dev/en/',
|
40
|
+
preview:
|
41
|
+
'https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/showcase/modernjs-dev-0425.jpeg',
|
42
|
+
type: 'doc',
|
43
|
+
},
|
44
|
+
{
|
45
|
+
name: t('shidianbaike'),
|
46
|
+
url: 'https://shidian.baike.com/',
|
47
|
+
preview:
|
48
|
+
'https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/showcase/shidianbaike-0424.jpeg',
|
49
|
+
type: 'framework',
|
50
|
+
},
|
51
|
+
{
|
52
|
+
name: t('xiaohe'),
|
53
|
+
url: 'https://xiaohe.cn/',
|
54
|
+
preview:
|
55
|
+
'https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/showcase/xiaohe-0424.png',
|
56
|
+
type: 'framework',
|
57
|
+
},
|
58
|
+
{
|
59
|
+
name: t('dongchedi'),
|
60
|
+
url: 'https://m.dcdapp.com/motor/feoffline/usedcar_channel/channel.html',
|
61
|
+
preview:
|
62
|
+
'https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/showcase/dongchedi-0425.png',
|
63
|
+
type: 'builder',
|
64
|
+
},
|
65
|
+
{
|
66
|
+
name: t('volcengineDeveloper'),
|
67
|
+
url: 'https://developer.volcengine.com/',
|
68
|
+
preview:
|
69
|
+
'https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/showcase/developer-volcengine-0425.png',
|
70
|
+
type: 'framework',
|
71
|
+
},
|
72
|
+
];
|
73
|
+
};
|
package/src/i18n/enUS.ts
CHANGED
@@ -47,4 +47,12 @@ export const EN_US = {
|
|
47
47
|
projectGenerator: 'Project Generator',
|
48
48
|
githubDiscussion: 'Github Discussion',
|
49
49
|
changelog: 'Changelog',
|
50
|
+
|
51
|
+
// Showcases
|
52
|
+
writingo: 'Writingo',
|
53
|
+
volctrans: 'Volctrans',
|
54
|
+
shidianbaike: 'Shidian Baike',
|
55
|
+
xiaohe: 'Xiaohe',
|
56
|
+
dongchedi: 'Dongchedi',
|
57
|
+
volcengineDeveloper: 'Volcengine Developer',
|
50
58
|
} as const;
|
package/src/i18n/zhCN.ts
CHANGED
@@ -47,4 +47,12 @@ export const ZH_CN: Record<keyof typeof EN_US, string> = {
|
|
47
47
|
projectGenerator: '项目生成器',
|
48
48
|
githubDiscussion: 'Github 讨论区',
|
49
49
|
changelog: '更新日志',
|
50
|
+
|
51
|
+
// Showcase
|
52
|
+
writingo: '火山写作',
|
53
|
+
volctrans: '火山翻译',
|
54
|
+
shidianbaike: '识典百科',
|
55
|
+
xiaohe: '小荷健康',
|
56
|
+
dongchedi: '懂车帝',
|
57
|
+
volcengineDeveloper: '火山引擎开发者社区',
|
50
58
|
};
|