使用Pnpm workspace + Nest + drizzle搭建monorepo架构

620 阅读1分钟

一、前言

本文将介绍一个基于pnpm workspace的NestJS monorepo架构,该架构包含两个NestJS应用程序、一个使用drizzle-orm的数据库包以及一个共享包 nest-drizzle-monorepo

二、packages包概述

image.png

NestJS应用程序包

我们的monorepo包含两个NestJS应用程序。NestJS是一个用于构建高效、可靠和可扩展的服务器端应用程序的框架。将应用程序分成两个包可以:

  • 分离不同的业务领域或功能模块
  • 独立开发和部署每个应用程序
  • 在必要时重用共享的业务逻辑

Drizzle-ORM数据库包

Drizzle-ORM是一个TypeScript ORM,专注于类型安全和开发者体验。将数据库操作封装在一个独立的包中可以:

  • 集中管理数据库模式和迁移
  • 为所有应用程序提供一致的数据访问层
  • 简化数据库相关代码的测试和维护

共享包

共享包包含可以在多个应用程序之间重用的代码。这可能包括:

  • 通用工具函数
  • 共享的接口和类型定义
  • 常量和配置

三、架构优势

  1. 代码重用:共享包和数据库包可以被多个应用程序使用,减少重复代码
  2. 一致性:集中管理依赖和共享代码确保了整个项目的一致性
  3. 开发效率:pnpm workspace使得在包之间建立本地依赖变得简单,加速了开发过程
  4. 灵活性:每个包可以独立开发、测试和部署,同时仍然保持紧密集成
  5. 可扩展性:随着项目的增长,可以轻松添加新的包或拆分现有包

三、Github Demo

nest-drizzle-monorepo