资讯详情

资讯详情

Bruno 桌面端本地开发环境搭建指南:技术栈、依赖安装、双进程启动与 PR 提交规范

Bruno 桌面端本地开发环境搭建指南技术栈、依赖安装、双进程启动与 PR 提交规范【免费下载链接】brunoOpensource IDE For Exploring and Testing APIs (lightweight alternative to Postman/Insomnia)项目地址: https://gitcode.com/GitHub_Trending/br/bruno本文对应仓库罗马尼亚语贡献指南 docs/contributing/contributing_ro.md并以仓库根目录 contributing.md 与真实源码为准做同步校正。读者读完可获得一套可在本机完整跑通的开源 API 客户端 Bruno 的本地开发链路理解工程结构 → 安装依赖 → 构建依赖包 → 双终端启动 Web 与 Electron → 运行测试 → 按规范提交 Pull Request。技术栈速览Bruno 桌面端由哪些模块构成Bruno仓库描述为Opensource IDE For Exploring and Testing APIs以 React 编写前端以 Electron 封装成可读取本地集合的桌面应用整个仓库通过npm workspaces组织多个子包。当前仓库的 UI 工程位于 packages/bruno-appElectron 壳工程位于 packages/bruno-electron。贡献指南中列出的核心第三方库均能在各包的package.json中找到直接佐证用途库仓库佐证样式CSSTailwindpackages/bruno-app的 devDependencies 含tailwindcss代码编辑器CodeMirrorpackages/bruno-app依赖codemirror5.65.2、codemirror-graphql状态管理ReduxRedux Toolkitreduxjs/toolkit、react-redux、tanstack/react-query共存于packages/bruno-app图标Tabler Iconstabler/icons表单formikformikSchema 校验Yupyup同时被usebruno/schema用作校验库请求客户端axiospackages/bruno-electron依赖axios根 package.json 中亦通过overrides固定为1.18.0文件系统监听chokidarpackages/bruno-electron依赖chokidar用于本地集合目录变更跟踪国际化i18nextpackages/bruno-app依赖i18next、react-i18next版本事实校正罗马尼亚语贡献文档写的是 Bruno 基于 Next.js 与 React 构建这反映的是较早版本的工程形态。以当前仓库为准见 contributing.md 与 packages/bruno-app/package.json前端 UI 使用React 19开发与构建服务器已切换为rsbuilddev脚本即rsbuild devElectron 仍作为桌面壳当前锁定electron~37.6.1。阅读旧文档时需要注意这一差异。环境前置条件Node 版本与 npm workspaces在开始前需确认本机具备 Node.js 与 npm。仓库在根目录提交了 .nvmrc内容为v22.12.0与根 package.json 中engines语义一致官方英文指南要求 Node v22.x 或最新 LTS。因此推荐使用Node v22.x例如 v22.12.0并配合支持npm workspaces的 npm。根 package.json 的workspaces字段列出了全部子包例如packages/bruno-app—— React UIrsbuild 构建packages/bruno-electron—— Electron 桌面壳packages/bruno-schema/bruno-schema-types—— 请求 Schema 定义与类型packages/bruno-query、packages/bruno-graphql-docs—— 查询与 GraphQL 文档packages/bruno-common、packages/bruno-converters、packages/bruno-requests、packages/bruno-filestore、packages/bruno-js、packages/bruno-lang、packages/bruno-toml、packages/bruno-sqlite、packages/bruno-tests等正是这些 workspace 的划分让后文的单包构建、单包测试成为可能。若本机装有 nvm可直接切到仓库锁定版本# 使用 .nvmrc 中锁定的 Node 版本 nvm use安装依赖npm i --legacy-peer-deps仓库根目录下的首次安装命令为npm i --legacy-peer-deps--legacy-peer-deps是刻意指定的Bruno 的部分依赖存在 peer dependency 版本冲突例如packages/bruno-app中 React 19 与若干历史依赖的 peer 约束跳过自动对等依赖树解析可保证安装顺利完成这一点也在根 package.json 的overrides如 axios、tar、rollup 的统一版本覆盖中得到印证。除了分步安装仓库还提供了一键初始化脚本npm run setup该脚本由 scripts/setup.js 实现内部依次完成清理各子目录中遗留的node_modules执行npm i --legacy-peer-deps安装依赖针对当前平台强制安装lydell/node-pty-*macOS/Windows/Linux 各自的原生终端依赖依次构建graphql-docs、bruno-query、bruno-common、bruno-converters、bruno-requests、schema-types、bruno-filestore、bruno-sqlite并打包bruno-js的沙箱库。本地开发先构建依赖包再双进程启动Bruno 是典型的Web Electron双进程桌面应用rsbuild 先把 UI 跑在本地 HTTP 端口上Electron 再加载该地址同时通过 preload 与 IPC 提供本地集合文件读写等桌面能力。第一步构建依赖包。手动方式依次执行对应 contributing.mdnpm run build:graphql-docs npm run build:bruno-query npm run build:bruno-common npm run build:bruno-converters npm run build:bruno-requests npm run build:schema-types npm run build:bruno-filestore # 打包 JS 沙箱运行库quickjs 相关资源 npm run sandbox:bundle-libraries --workspacepackages/bruno-js这些脚本均定义在根 package.json 中build:*系列并通过--workspace落到各子包。若已执行过npm run setup则此步可跳过。第二步双终端启动。打开两个终端# 终端 1启动 Reactrsbuild dev server npm run dev:web # 终端 2启动 Electron 桌面应用 npm run dev:electrondev:web等价于npm run dev --workspacepackages/bruno-app在packages/bruno-app内执行rsbuild devdev:electron等价于在packages/bruno-electron内执行electron .入口为src/index.js。第三步可选单命令一键启动。若不想手动盯端口可运行npm run dev其实现见 scripts/dev.js脚本先在packages/bruno-app中启动 rsbuild通过正则Local:\shttp://localhost:(\d)解析实际端口再把BRUNO_DEV_PORT注入 Electron 进程环境后启动npm run dev并在任一进程退出时统一清理两个子进程。dev:watch对应 scripts/dev-hot-reload.js则是带热重载的变体。自定义 Electron userData 路径调试辅助。在开发模式下若设置了ELECTRON_USER_DATA_PATH环境变量应用会将 Electron 的userData重定向到该目录便于在隔离数据下排查问题ELECTRON_USER_DATA_PATH$(realpath ~/Desktop/bruno-test) npm run dev:electron执行后会在桌面生成bruno-test目录作为应用数据目录。常见问题排查Unsupported platform 与依赖清理重装贡献指南专门给出了 Windows 平台开发中高频出现的Unsupported platform报错处理。该错误通常源于package-lock.json中残留了其他操作系统/CPU 平台的可选原生依赖条目。官方给出的修复流程是删除各子目录中的node_modules与package-lock.json再重新执行npm install让 npm 按当前平台重新解析依赖# 删除子目录中的 node_modules谨慎执行仅清理依赖产物 find ./ -type d -name node_modules -print0 | while read -d $\0 dir; do rm -rf $dir done # 删除子目录中的 package-lock.json find . -type f -name package-lock.json -delete提示npm run setupscripts/setup.js中的清理步骤已自动完成类似动作并且会跳过tests/scripting/additional-context-roots/fixtures这类被当作测试夹具、必须保留node_modules的目录因此也可以直接用npm run setup一键恢复可运行状态随后重新执行构建与双进程启动命令。运行测试单工作区与全工作区贡献指南中的测试分为两个粒度# 运行 bruno-schema 的单元测试 npm test --workspacepackages/bruno-schema # 对所有声明了 test 脚本的 workspace 运行测试 npm test --workspaces --if-presentpackages/bruno-schema的 package.json 中test脚本为jest。由于仓库采用 workspace 结构官方英文指南contributing.md建议按需对每个子包分别跑测试例如npm run test --workspacepackages/bruno-query npm run test --workspacepackages/bruno-common npm run test --workspacepackages/bruno-converters npm run test --workspacepackages/bruno-app npm run test --workspacepackages/bruno-electron npm run test --workspacepackages/bruno-lang npm run test --workspacepackages/bruno-toml npm run test --workspacepackages/bruno-filestore npm run test --workspacepackages/bruno-js其中bruno-js的测试packages/bruno-js/tests覆盖 quickjs 沙箱生命周期、脚本运行期、变量/集合 API 等运行时行为bruno-schema的测试围绕请求 Schema 校验展开bruno-app/bruno-electron侧还有更多 jest 与测试工具集可参考 tests 目录与根 package.json 中的test:e2e等 Playwright 脚本。建议在提交前先跑一遍受影响子包的测试再跑全量npm test --workspaces --if-present兜底。提交贡献小 PR 与分支命名规范贡献指南对协作流程提出了两条核心要求PR 保持小而聚焦一个 PR 只解决一件事便于评审、回滚与追溯遵循分支命名格式分支前缀含义示例feature/[feature name]承载某个具体功能的改动feature/dark-modebugfix/[bug name]只包含针对某个 Bug 的修复bugfix/bug-1从仓库结构可以进一步推断仓库围绕 UI、Schema、运行时、解析器、数据库等多包拆分正是为了让每个 PR 能精准落在单一 workspace 上从而满足小而集中的约束。若要参与更深层的代码风格与提交约定可一并阅读仓库根目录的 CODING_STANDARDS.md该文档与 contributing.md 及分布在 docs/contributing/ 下的多语言贡献指南互为补充。结语把 Bruno 跑起来是贡献的第一步从技术栈认知到npm i --legacy-peer-deps安装依赖再到先构建依赖包、再dev:web与dev:electron双进程启动本文完整复现了罗马尼亚语贡献指南docs/contributing/contributing_ro.md中的核心开发路径并结合当前仓库源码校正了 Node 版本、构建工具与测试命令等细节。开发者可依据排查Unsupported platform→ 运行bruno-schema及全 workspace 测试 → 以feature/、bugfix/前缀提交小 PR的闭环安全地进入 Bruno 的实际贡献流程。【免费下载链接】brunoOpensource IDE For Exploring and Testing APIs (lightweight alternative to Postman/Insomnia)项目地址: https://gitcode.com/GitHub_Trending/br/bruno创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →