Skip to content

rrweb 贡献指南 ​

我们希望让参与本项目的贡献尽可能简单、透明。

我们的开发流程 ​

rrweb 的大部分开发工作都在 GitHub 上进行。因此,贡献流程 遵循标准的 GitHub 协作规范。

Pull Request ​

我们积极欢迎你的 Pull Request(PR)!

  1. Fork 本仓库,并从 master 分支创建你的分支。
  2. 如果你添加了需要测试的代码,请一并添加测试。
  3. 确保测试套件全部通过;如有测试失败且不清楚原因,请寻求帮助。
  4. 我们使用 changesets,方便你为 PR 撰写变更说明,使其能随下一次发布打包。如果你还没有填写 changeset,GitHub 插件会提示你填写。
  5. 如果你修改了 API,请同步更新文档。
  6. 确保你的代码通过 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:webkit

Linux——各发行版的系统库依赖不同。最可靠的方法是使用 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 许可证进行授权。