跳到主要内容

项目架构

pbvm 采用 pnpm workspace 单仓架构,包含 CLI 核心包和文档站点两个子项目。

100%
100%

关键模块说明

模块路径职责
browser.lock.tssrc/browser/@puppeteer/browsersinstall / uninstall / getInstalledBrowsers 加锁封装,防止并发读写 cache 目录
base.browser.tssrc/browser/WebSocket 连接抽象(DevConnection)、进程启动、endpoint 捕获,Chromium 和 Firefox 共用
chromium.browser.tssrc/browser/CDP 协议实现,通过 Browser.getVersion / Target.attachToTarget / Runtime.evaluate 采集运行时信息,支持 headless=new 降级到 headless
firefox.browser.tssrc/browser/WebDriver BiDi 协议实现,通过 session.new / script.evaluate 采集运行时信息,RemoteValue 反序列化
buildEnvScript.tssrc/browser/注入浏览器页面执行的指纹采集脚本,收集 userAgentwebglscreentimezone 等环境信息
manifest.tssrc/utils/browserlist.json 读写 + Store 列表查询,支持按 alias 或 browser@buildId 查找
lock.tssrc/utils/进程级文件锁,acquireLock 获取写锁(排他),waitForLock 等待读锁释放
paths.tssrc/utils/基于 env-paths 的目录管理,提供 cache / data / config / log / temp 五个标准路径

核心依赖链

100%
100%

总结

层级职责关键文件
入口Commander CLI 启动、命令注册src/index.ts
命令层参数解析、交互式补全、权限确认src/commands/*.ts
Prompt 层@inquirer/prompts 交互式问答src/prompts/*.ts
脚本层核心业务逻辑src/bin/*.script.ts
浏览器层CDP/BiDi WebSocket 通信、进程管理、锁src/browser/*.ts
工具层manifest 管理、文件锁、路径、日志src/utils/*.ts
类型层Zod 运行时校验 + TypeScript 类型src/types/index.ts
API对外暴露 launchBrowser()src/api.ts
文档Docusaurus 3 + Tailwind 4 + React 19documentation/