什么是 FSS
FSS(Full-Stack Scaffold)= 一套多端共享代码的全栈项目脚手架,结构:
| |
核心技术栈:
- 包管理:pnpm(快、节省磁盘)
- 构建编排:turbo(增量构建、任务编排)
- 代码规范:ESLint + Prettier + Stylelint
- Git 钩子:husky + lint-staged + commitlint
- UI 框架:Ant Design + Pro Components
初始化
1. 创建根 package.json
| |
2. 创建 pnpm-workspace.yaml
| |
3. 创建 turbo.json
| |
4. 安装依赖
| |
5. 创建各端
| |
ESLint + Prettier 统一
.eslintrc.cjs(根目录)
| |
.prettierrc
| |
.stylelintrc.cjs
| |
husky + lint-staged
启用 husky
| |
.lintstagedrc.json
| |
commitlint
| |
| |
提交示例:
| |
turbo 命令
| |
子项目依赖管理
| |
UI 共享包(packages/ui)
| |
packages/ui/src/index.ts:
| |
在 admin-pc 引用:
| |
desktop 子项目(Tauri + React)
| |
| |
| |
开发:
| |
打包:
| |
全局目录(global/)
| |
性能优化
- turbo 远程缓存:
turbo.json加remoteCache: { teamSlug: "...", token: "..." } - pnpm 设置:
~/.npmrc加auto-install-peers=true/strict-peer-dependencies=false - 构建缓存:
outputs: ["dist/**", ".next/**"]命中增量
下一步
- 想把 PC 端 + 移动端用一套代码覆盖,看 2021-07-15《PC 前端技术选型》
- 想用 Tauri 2.x 替代 Electron,看 2020-05-15《Tauri 2.x 跨平台桌面应用》
参考资料
- pnpm workspace:https://pnpm.io/workspaces
- Turborepo 文档:https://turbo.build/repo/docs
- husky:https://typicode.github.io/husky/
- lint-staged:https://github.com/lint-staged/lint-staged
- Ant Design:https://ant.design/
