nodejs项目Monorepo模式的基础操作

简单说明

Monorepo(一仓多包),主要是指nodejs环境下的项目,简单说就是在一个git代码仓库下,把项目拆分为多个package,可以分别开发但又互相协作。

举例

一个nodejs环境下的全站项目,需要前后端分离,这很自然的就会产生一个情况,前后端后使用一些共同的定义,比如复杂的接口参数。这时,把这些接口参数的定义,放到一个公共的地方,就是一个很自然很合理的做法。这就是Monorepo的一个基础使用场景。 技术上,Monorepo需要使用pnpm的workspace。

项目搭建过程

shell 复制代码
// 首先全局安装pnpm
npm install -g pnpm

// 创建项目基本目录
mkdir prj_root
// 在项目根目录下init
pnpm init

// 如果确定的话,可以先安装一些公用的包在根目录 比如vite
pnpm add vite -w
pnpm add -D typescript -w
pnpm add -D @types/node -w

// 创建tsconfig
pnpm tsc --init

// 创建pnpm的workspace管理文件
touch pnpm-workspace.yaml

pnpm-workspace.yaml中写入

yaml 复制代码
packages:
    - 'packages/*'

下面进行子包的操作

共享库 shared

shell 复制代码
// 创建packages目录,在其中进行多包的操作
cd prj_root && mkdir packages

// 先创建共享库
cd packages && mkdir shared && pnpm init && pnpm tsc --init

// 创建 src/index.ts
// 先写一个简单的interface 代码不贴了
    
// 

后端 backend

shell 复制代码
cd packages && mkdir backend && pnpm init && pnpm tsc --init
 

子包的tsconfig要继承根目录的tsconfig

json 复制代码
{
  "extends": "../../tsconfig.json",
  "compilerOptions": {
    "outDir": "./dist",
    "rootDir": "./src"
  }
}

添加共享包

shell 复制代码
// 通过workspace方式添加
pnpm add @agent4/shared@workspace:*

前端frontend

shell 复制代码
// 前端子包操作
相关推荐
能源革命1 小时前
Vue 网格拖拽布局组件全景指南:7 大方案深度对比
前端·javascript·vue.js
PC2005_cloud1 小时前
AI 汉字漂移实录:它为什么总把「学习」写成日语「学習」
前端·后端
穆梓兰煊1 小时前
AI供应链安全不再只是包安全,还涉及模型与数据
前端·数据库
RaaS1001 小时前
AI网关能做Prompt注入防护吗?AI网关核心功能详解
前端·后端
deli0071 小时前
Skill 怎么写才被 Agent 命中?18 条规则做成 SKILL.md 校验器,规范样例 92 分
前端
Hum8le1 小时前
CTF题目《easy_web》(安洵杯 2019 变种 Web)
前端·安全·web安全
coding漫漫长路1 小时前
二值化后还剩1212个黑点,OCR却认成了乱码
前端
不可能片场2 小时前
AI视频口型对齐 用音频驱动说话镜头
前端·electron
Lank_M2 小时前
OCR一个字没认错,倾斜2.5°却把行序排乱了
前端
daols882 小时前
vue 表格组件 vxe-table 实现自定义多行编辑功能
前端·javascript·vue.js·vxe-table