Skip to content

Commit 7087b70

Browse files
authored
docs: 更新开发指南到 bun 栈 (#485)
1 parent b3f7935 commit 7087b70

4 files changed

Lines changed: 97 additions & 55 deletions

File tree

packages/docs/src/content/docs/contribute/development/environments.md

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,24 @@ title: 开发环境配置
44

55
## 必要环境
66

7-
- Node.js 22+([官网](https://nodejs.org/)
8-
- bun([官网](https://bun.sh/)
7+
- bun([官网](https://bun.sh/)),建议版本与仓库 `package.json``packageManager` 一致(当前为 `bun@1.3.12`
98
- Rust toolchain([官网](https://www.rust-lang.org/tools/install)
109
- Rust target:`wasm32-unknown-unknown`
1110
- wasm-pack([仓库](https://github.com/rustwasm/wasm-pack)
1211

13-
另外,建议全局安装 Nx。全局安装后 Nx 相关命令直接为 `nx ...`,否则使用 `bunx nx ...`。此后不再赘述。
12+
本仓库默认使用 `bun nx ...` 执行 Nx 命令,不要求全局安装 Nx。为了本地便利开发,你也可以全局安装 Nx,效果是相同的。
13+
14+
Node.js 仅在 npm 发布相关 CI 步骤中作为运行时使用(当前发布工作流为 Node 24)。
1415

1516
### 版本自查
1617

1718
```bash
18-
node --version
1919
bun --version
2020
rustc --version
2121
cargo --version
2222
rustup --version
2323
wasm-pack --version
24-
nx --version
24+
nx --version # 可选
2525
```
2626

2727
如需确认 wasm 目标已安装,可额外执行:
@@ -45,22 +45,6 @@ cargo install wasm-pack
4545

4646
完成后,执行一次构建所有包:`bun run build:libs`,若成功构建完成说明环境无误,可以开始工作。
4747

48-
## 本地开发常用命令
49-
50-
```bash
51-
# 构建所有 library
52-
bun run build:libs
53-
54-
# 构建某个包
55-
nx build core
56-
57-
# 仅启动文档站
58-
nx dev docs
59-
60-
# 构建文档站
61-
nx build docs
62-
```
63-
6448
## 与 Rust/WASM 相关的包
6549

6650
以下包使用 `wasm-pack` 构建:
@@ -87,7 +71,7 @@ rustup target add wasm32-unknown-unknown
8771

8872
### 依赖安装慢或失败
8973

90-
优先确认 Node/bun 版本与锁文件一致,再重试:
74+
优先确认 Bun 版本与锁文件一致,再重试:
9175

9276
```bash
9377
bun install --frozen-lockfile

packages/docs/src/content/docs/contribute/development/structure.mdx

Lines changed: 74 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,39 +11,96 @@ import { FileTree } from "@astrojs/starlight/components";
1111
<FileTree>
1212

1313
- packages/
14-
- core/
15-
- react/
16-
- react-full/
17-
- vue/
18-
- lyric/ Rust + wasm-pack
14+
- core/ 核心组件,Vanilla JS 实现
15+
- react/ 核心组件的 React 绑定
16+
- vue/ 核心组件的 Vue 绑定
17+
- react-full/ 可直接使用的完整播放器组件,仅 React 版本
18+
- ttml/ TTML 解析与处理库
19+
- lyric/ 歌词解析与处理库,TTML 实际依赖 ttml 包
1920
- fft/ Rust + wasm-pack
2021
- ws-protocol/ Rust + wasm-pack
21-
- ttml/
2222
- docs/ Astro + Starlight 文档站
23+
- playground/ 用于开发和测试的示例项目
24+
- core/ 使用核心组件的示例
25+
- react/ 使用 React 绑定的示例
26+
- vue/ 使用 Vue 绑定的示例
27+
- react-full/ 使用完整播放器组件的示例
2328
- .github/
2429
- workflows/
25-
- nx.json
30+
- scripts/
2631

2732
</FileTree>
2833

29-
## 包分层(概览)
30-
31-
- 渲染与框架绑定:`core``react``react-full``vue`
32-
- 歌词与协议能力:`lyric``ttml``ws-protocol`
33-
- 音频可视化:`fft`
34-
- 文档站:`docs`
35-
36-
## Nx 与发布分组
34+
## Nx 发布分组
3735

3836
`nx.json` 中的发布配置包含两个主要 group:
3937

40-
- `core-bundle`(固定版本)
38+
- `core-bundle` 三个包版本保持一致
4139
- `@applemusic-like-lyrics/core`
4240
- `@applemusic-like-lyrics/react`
4341
- `@applemusic-like-lyrics/vue`
44-
- `libraries`(独立版本)
42+
- 其余包版本各自独立
4543
- `@applemusic-like-lyrics/fft`
4644
- `@applemusic-like-lyrics/lyric`
4745
- `@applemusic-like-lyrics/react-full`
4846
- `@applemusic-like-lyrics/ttml`
4947
- `@applemusic-like-lyrics/ws-protocol`
48+
49+
## 依赖关系
50+
51+
你可以在终端执行:
52+
53+
```sh
54+
bun nx graph
55+
```
56+
57+
来查看完整的依赖关系图。
58+
59+
在提升版本号时,如果被依赖的包发生了更新,则依赖它的包也会被自动提升版本号,即使代码没有改动。
60+
61+
## 命令行
62+
63+
### 库开发
64+
65+
Nx 提供了便捷的命令行工具,无需输入 `@applemusic-like-lyrics/` 前缀也可执行命令。
66+
67+
例如,要构建 `@applemusic-like-lyrics/react` 包,可以直接执行:
68+
69+
```sh
70+
bun nx build react
71+
```
72+
73+
Nx 会自动解析依赖,因此会先构建 `core` 包,然后构建 `react` 包。
74+
75+
我们在 `package/playground` 中准备了用于测试的 web app,基于 Vite,具有 HMR 支持。我们从 `core``react``vue``react-full` 中添加了转发,因此要启动对应环境,只需要:
76+
77+
```sh
78+
# 启动 package/playground/core 的开发服务器
79+
bun nx dev core
80+
81+
# 下面同理
82+
bun nx dev react
83+
bun nx dev vue
84+
bun nx dev react-full
85+
```
86+
87+
要构建全部包,执行:
88+
89+
```sh
90+
bun build:libs
91+
```
92+
93+
即可自动并行构建所有包,构建顺序由依赖关系决定。
94+
95+
### 文档开发
96+
97+
同理,文档站的别名是 `docs`,有如下命令:
98+
99+
```sh
100+
# 启动文档站开发服务器
101+
bun nx dev docs
102+
# 构建文档站
103+
bun nx build docs
104+
```
105+
106+
会自动处理依赖关系。

packages/docs/src/content/docs/contribute/guidelines/pr.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ title: PR 流程
1717
- 在需要时执行 `bun run release:plan:check --base=... --head=...`
1818

1919
2. `Build libs`
20-
- 安装 Node/Bun 依赖。
20+
- 安装 Bun 依赖`bun install --frozen-lockfile`
2121
- 安装 Rust `stable``wasm32-unknown-unknown``wasm-pack@v0.13.1`
2222
- 执行 `bun run ci:build:libs`
2323

@@ -35,9 +35,13 @@ title: PR 流程
3535

3636
```bash
3737
# 只为本次 touched 项目生成计划(默认行为)
38-
nx release plan
38+
bun nx release plan
3939
```
4040

4141
然后根据提示选择各包变动幅度并输入 changelog。
4242

4343
命令会在 `.nx/version-plans/` 下生成计划文件,请将该文件一并提交。
44+
45+
## 关于合并
46+
47+
目前设置了分支保护规则,仅允许 squash merge,以保持主分支洁净。

packages/docs/src/content/docs/contribute/guidelines/publishing.md

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,27 +15,24 @@ npm 包发布通过 GitHub Actions 手动触发,工作流文件:
1515

1616
## 发布前置条件
1717

18-
- 必须从 `main` 分支触发(工作流内有强校验)
18+
- `publish` 必须从 `main` 分支触发`dry-run` 可以从其他分支触发
1919
- `.nx/version-plans/` 下必须存在 release plan 文件。
20-
- 仓库 PR 校验应已通过。
2120

2221
## 工作流执行步骤摘要
2322

24-
1. 校验当前分支是 `main`
25-
2. 安装依赖与发布环境(Node 24、Bun、Rust、wasm-pack)。
26-
3. 执行 `bunx nx release --dry-run`
27-
4.`mode=publish` 时:
28-
- 执行 `bunx nx release --skip-publish` 创建 release commit 与 tags。
23+
1.`mode=publish` 时,强校验当前分支必须是 `main`
24+
2. 安装依赖与发布环境(Bun、Node 24、Rust、wasm-pack)。
25+
3. 校验 trusted publishing 运行时(Node 版本等)。
26+
4. 执行 `bun install --frozen-lockfile`
27+
5. 执行 `npx nx release --skip-publish --preid alpha` 创建 release commit 与 tags。
28+
6. 格式化 `package.json` 并 amend release commit。
29+
7.`mode=publish` 时:
2930
- `git push origin HEAD:main --follow-tags`
30-
- 执行 `bunx nx release publish` 发布到 npm。
31+
- 调整发布前清单(强制 npm 发布器、准备 npm manifests)。
32+
- 执行 `npx nx release publish --excludeTaskDependencies` 发布到 npm。
3133

3234
## 推荐发布流程
3335

34-
1. 先手动触发一次 `mode=dry-run`确认版本变更和产物正常
36+
1. 先手动触发一次 `mode=dry-run`确认版本变更与发布前检查正常(该模式不会推送 tags,也不会发布到 npm)
3537
2. 再触发 `mode=publish` 完成正式发布。
3638
3. 发布后检查 npm 与 GitHub tags 是否符合预期。
37-
38-
## 注意事项
39-
40-
- 本仓库使用 Nx release groups,部分包是固定版本(如 `core-bundle`),部分包是独立版本(`libraries`)。
41-
- 发布流程依赖 OIDC trusted publishing 运行时要求,工作流已内置 Node/NPM 版本校验。

0 commit comments

Comments
 (0)