关于 monorepo
面向 TypeScript monorepo 开发的技能,涵盖 React、Next.js、Expo 等技术。提供项目组织、验证、状态管理、跨平台开发及后端集成规范。
主要功能
- 01TypeScript 与 Zod 规范
- 02Turbo 工作区组织
- 03React 状态与数据模式
- 04Web 和移动端本地化
- 05Supabase 与 Stripe 指引
适用场景
- 01组织 TypeScript monorepo
- 02构建 Web 与移动端共享功能
- 03验证数据并管理应用状态
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill monorepo安装后在 Claude Code 中输入/monorepo确认已加载。
详细介绍
单体仓库开发
你精通 TypeScript、React 和 Next.js、Expo(React Native)、Tamagui、Supabase、Zod、Turbo(单体仓库管理)、i18next、Zustand、TanStack React Query、Solito 和 Stripe。
代码风格与结构
- 编写简洁、技术性强的 TypeScript 代码,并提供准确的示例
- 使用函数式和声明式编程模式;避免使用类
- 优先采用迭代和模块化,避免代码重复
- 使用描述性变量名,并包含辅助动词(例如
isLoading、hasError) - 按导出的组件、子组件、辅助函数、静态内容和类型来组织文件
- 组件和函数优先使用命名导出
- 目录名使用小写字母和连字符(例如
components/auth-wizard)
TypeScript 与验证
- 所有代码都使用 TypeScript;对象结构优先使用接口而非类型
- 使用 Zod 进行架构验证和类型推断
- 避免使用枚举;改用字面量类型或映射
- 使用可辨识联合实现恰当的错误处理
状态与数据管理
- 使用 Zustand 进行状态管理
- 使用 TanStack React Query 获取和缓存数据
- 尽量减少
useEffect和setState的使用;优先采用派生状态 - 实现乐观更新,提升用户体验
单体仓库结构
- 遵循使用 Turbo 管理单体仓库的最佳实践
- 使用独立的
apps和packages目录 - 在根目录的
configs/目录中保存共享配置 - 为工作区采用一致的命名规范
- 遵循标准的 Turborepo 工作区目录结构:
apps/用于应用工作区(Next.js、Expo 应用)packages/用于共享包工作区(UI、utils、configs)
国际化
- Web 国际化使用 i18next
- React Native 国际化使用 expo-localization
- 按功能或领域整理翻译文件
错误处理与验证
- 优先处理错误和边界情况
- 在函数开头处理错误和边界情况
- 对错误情况使用提前返回,避免嵌套过深的 if 语句
- 将正常流程放在函数最后,以提升可读性
- 避免不必要的 else 语句;改用 if-return 模式
- 使用守卫子句尽早处理前置条件和无效状态
- 实现恰当的错误日志记录和用户友好的错误消息
性能优化
- 使用动态导入进行代码分割
- 对非关键组件实现延迟加载
- 优化图片:使用 WebP 格式,包含尺寸数据,并实现延迟加载
- 尽量减少 'use client'、'useEffect' 和 'setState' 的使用
跨平台开发
- 使用 Solito 实现 Web 和移动端之间的导航
- 使用
.native.tsx文件编写平台专属代码 - 通过包共享业务逻辑和 UI 组件
后端集成
- 使用 Supabase 进行身份验证和数据库管理
- 实现行级安全性(RLS)策略
- 使用 Zod 架构验证 API
- 妥善处理 webhook 事件
支付
- 集成 Stripe,并实现恰当的 webhook 处理程序
- 处理 Stripe 与数据库之间的订阅同步
- 妥善处理支付失败
评论
支持 Markdown