rrweb 贡献指南
我们希望让参与本项目的贡献尽可能简单、透明。
我们的开发流程
rrweb 的大部分开发工作都在 GitHub 上进行。因此,贡献流程 遵循标准的 GitHub 协作规范。
Pull Request
我们积极欢迎你的 Pull Request(PR)!
- Fork 本仓库,并从
master分支创建你的分支。 - 如果你添加了需要测试的代码,请一并添加测试。
- 确保测试套件全部通过;如有测试失败且不清楚原因,请寻求帮助。
- 我们使用 changesets,方便你为 PR 撰写变更说明,使其能随下一次发布打包。如果你还没有填写 changeset,GitHub 插件会提示你填写。
- 如果你修改了 API,请同步更新文档。
- 确保你的代码通过 lint 与类型检查。
Issue
我们使用 GitHub issue 来跟踪公开的 bug。请确保你的描述清晰,并附带 足够的复现步骤。
本地运行
- 安装依赖:
yarn - 构建所有包:(在
/下)yarn build:all或yarn dev - 在网站上运行录制器:(在
/packages/rrweb下)yarn repl - 在本地运行协同浏览/镜像会话:(在
/packages/rrweb下)yarn live-stream - 构建单个包:
yarn build或yarn dev - 测试:
yarn test或yarn test:watch - WebKit(Safari 引擎)测试:
yarn test:webkit(在/packages/rrweb-snapshot下)
WebKit 测试
test/webkit-monkey-patched.test.ts 被排除在常规的 yarn test 之外,因为它需要 Playwright 的 WebKit 浏览器二进制文件。它会在 packages/rrweb-snapshot 中通过 yarn test:webkit 单独运行。
macOS——安装一次浏览器,然后直接运行:
sh
npx playwright install webkit
yarn test:webkitLinux——各发行版的系统库依赖不同。最可靠的方法是使用 Docker(需要安装 Docker):
sh
# 首次运行,或修改 rrweb-snapshot 源码后:先构建 dist,再构建镜像
cd packages/rrweb-snapshot && yarn build && cd ../..
docker build -t rrweb-webkit-test -f Dockerfile.webkit-test .
# 运行 rrweb-snapshot 的 webkit 测试
docker run --rm -e BROWSER=webkit rrweb-webkit-test \
yarn workspace rrweb-snapshot vitest run --config vitest.config.webkit.ts
# 运行 rrweb 的 webkit 测试
docker run --rm -e BROWSER=webkit rrweb-webkit-test \
yarn workspace rrweb vitest run --config vitest.config.webkit.ts
# 在测试文件和/或 dist 上迭代,而无需重建镜像
#(如果你修改了源码,先在相关包中运行 `yarn build`)
docker run --rm -e BROWSER=webkit \
--mount type=bind,src=/absolute/path/to/rrweb/packages/rrweb-snapshot/dist/rrweb-snapshot.umd.cjs,dst=/work/packages/rrweb-snapshot/dist/rrweb-snapshot.umd.cjs \
--mount type=bind,src=/absolute/path/to/rrweb/packages/rrweb-snapshot/test/monkey-patched.test.ts,dst=/work/packages/rrweb-snapshot/test/monkey-patched.test.ts \
rrweb-webkit-test bash -c 'yarn workspace rrweb-snapshot vitest run --config vitest.config.webkit.ts'该镜像基于 mcr.microsoft.com/playwright:v1.60.0-jammy,其中预装了所有必需的系统库。只需更改 yarn workspace 命令,即可用同一镜像运行 monorepo 中任何包的 WebKit 测试。更新 playwright 包版本或新增测试文件后,需重新构建镜像。
- Lint:
yarn lint - 用 prettier 重写文件:
yarn format或yarn format:head
编码风格
参见文档
许可证
rrweb 采用 MIT 许可证。
向 rrweb 贡献即表示你同意你的贡献将按照其 MIT 许可证进行授权。