electron-workspace 模板¶
electron-workspace 是一个通用的 pnpm Monorepo 模板,目标是快速创建同时支持 Web 和 Electron 桌面端的 TypeScript 工程。它只提供工程结构和开发工具,不包含任何具体业务逻辑。
生成后的结构¶
DevOps 基础组件¶
pnpm-workspace.yaml:统一管理apps/*和packages/*。packageManager:固定 pnpm 主版本,减少本地和 CI 的差异。- 默认分支固定为
master,CI 和版本工作流使用同一个分支。 justfile:统一封装安装、格式检查、类型检查、测试、构建和本地启动命令。cog.toml:使用 Conventional Commits 计算版本、更新 Changelog,并推送版本标签;成员注册由统一的workspace_membersprovider 完成。- GitHub Actions:调用仓库提供的
reusable-electron-ci.yaml、reusable-electron-release.yaml和reusable-version-bump.yaml,统一执行质量检查、跨平台打包和版本发布。 .github/renovate.json5:同时更新 npm 依赖和 GitHub Actions,避免依赖长期过期。- Conventional Commits / Cocogitto:为后续自动生成 Changelog 和版本发布保留入口。
- Cookiecutter Hook:生成后通过
workspace_members/pnpm创建四个初始成员,校验项目名、按开关删除 CI 文件、初始化 Git,并可执行pnpm install。
工程使用建议¶
中央化 Workflow¶
生成项目中的 .github/workflows/ 只保留触发器和参数;具体步骤集中在 repo-scaffold 的可复用 Workflow 中。当前模板包含:
ci.yaml:Pull Request 和主分支质量检查。version-bump.yaml:调用中央 Cocogitto 版本流程。release.yaml:在 Tag 或手动触发时调用中央 Electron 打包流程。
Electron 打包流程默认生成 Windows、macOS 和 Linux 的未签名产物,并上传到 GitHub Release。中央 Workflow 已预留可选的证书 Secrets 通道;没有 Secrets 时不会签名。签名、公证仍需项目显式配置,模板不强制开启。
可选 Secrets:WIN_CSC_LINK、WIN_CSC_KEY_PASSWORD、MAC_CSC_LINK、MAC_CSC_KEY_PASSWORD、APPLE_API_KEY、APPLE_API_KEY_ID、APPLE_API_ISSUER、APPLE_TEAM_ID。
统一的可复用 CI¶
业务项目只声明:
Node、pnpm、缓存和权限配置集中在可复用 Workflow 中;本地命令统一通过 just 调用。具体项目可以在此基础上增加 API、领域测试和 Electron 打包 Job。
Monorepo 依赖边界¶
packages/shared 不依赖 Electron 或 React,packages/ui 只承载跨 Web/桌面的界面能力,Electron 主进程留在 apps/desktop。这样业务包可以独立演进,不会把桌面运行时依赖扩散到所有包。
生成模板时保持可选择性¶
use_github_actions 和 install_after_generate 让模板既能生成完整工程,也能生成适合离线学习的最小工程。敏感配置只生成 .env.example,不把凭据写入模板。
业务项目的扩展方式¶
具体业务项目应在生成的工作区中增加自己的业务层:
apps/api
packages/project-domain
packages/project-runtime
packages/project-connectors
packages/project-policy
这样脚手架负责 Web/Electron 工程一致性,业务项目负责自身领域能力演进。