通过monorepo管理多个子项目

news2024/11/23 22:33:30

通过monorepo管理多个子项目

1. Monorepo模式

Monorepo 模式下,根目录通常不建议直接安装依赖,而是通过工作区(workspaces)来管理依赖。
但是在一些情况下,在根目录安装一些共享依赖也是可以的。

  1. 在根目录安装开发相关的依赖
    TypeScript, ESLint, Jest等。这些可以被所有子包共享。
  2. 安装一些工具类库
    例如Lodash, Moment等小而通用的工具类库。
  3. 安装一些根模块需要的依赖
    如果根目录下也有一些共享的模块,那么这些模块需要的依赖可以安装在根目录下。
  4. 简单的 Monorepo 项目
    如果子包之间共享的依赖不多,也可以直接都安装在根目录,而不是过度引入工作区管理的复杂性。
  5. 通过优化提高共享依赖重用
    比如使用些 alias、symlink 等方式提高依赖共享。

2. 根目录

mkdir root-project
cd root-project
pnpm init

创建一个pnpm-workspace.yaml文件, 两个子项目分别是vite-reactvite-vue

packages:
  - "vite-react/"
  - "vite-vue/"

在这里插入图片描述

3. 子项目

3.1 创建

使用vite的脚手架创建项目时,可以不用先创建文件夹,通过pnpm create vite按照步骤选择自己功能
在这里插入图片描述

3.2 安装依赖

在这里插入图片描述

  • 这里每个项目还未安装node_modules, 可以通过monorepo的特性,直接在根目录输入pnpm i即可

在这里插入图片描述
在这里插入图片描述

3.3 通过在根目录下的package.json中配置命令,可以运行子项目

"scripts": {
  "dev:react": "pnpm -C vite-react dev",
  "dev:vue": "pnpm -C vite-vue dev"
}

在这里插入图片描述

说明: pnpm -C <workspace-name> <command>

4. 其他

通过pnpm i <modules-name> -S | -D -w用来在根目录安装共享依赖, 其他子项目可以使用
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1041575.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手把手教 - 开源库 libmodbus 的RTU-Master 的使用笔记

测试环境&#xff1a;基于nuc980开发板 Linux信息&#xff1a;Linux buildroot 4.4.289 #8 PREEMPT Thu Sep 21 14:29:45 CST 2023 armv5tejl GNU/Linux 目录&#xff1a; 一、libmodbus 库简介 二、下载链接 三、移植准备 四、移植过程和完整代码 五、测试结果 一、libmodbus …

虚拟机数据恢复:Stellar Data Recovery for Virtual Machine

虚拟机数据恢复-----Crack Version Stellar Data Recovery for Virtual Machine 软件可从 VMware (.vmdk)、ORACLE (.vdi) 和 Microsoft (.vhd) 虚拟映像文件中恢复丢失和删除的数据。 从 VMDK、VDI 和 VHD 虚拟映像文件中恢复数据提供原始恢复选项来恢复数据从已删除或无法识…

太阳能供电模块

基于Solar Cell的锂电池充放电模块 由于一些需求&#xff0c;最近做了一款基于太阳能的锂电池充放电模块。该模块能够利用太阳能为锂电池充电和为负载提供5V的电压&#xff0c;在太阳能不充足的条件下&#xff0c;由锂电池提供需要的能量。 主要思路是将太阳能板获得的能量存储…

嵌入式Linux学习(1)——通信总线协议简介

目录 一. UART 1.1 单工/双工通信 ​编辑 1.2 UART帧格式 1.2.1 Q/A 1.3 UART硬件结构 二. 基于UART的协议 2.1 RS232 2.1.1 RS232协议存在的问题 2.2 RS485 2.2.1 差分信号 2.2.2 RS485优势 三. IIC 3.1 通信过程 3.2 IIC总线寻址 3.3 IIC总线信号 3.3.1 起始…

USB转2路RS422串口

基于USB转2路串口芯片CH342&#xff0c;可以为各类主机扩展出2个独立的串口。CH342芯片支持使用操作系统内置的CDC串口驱动&#xff0c;也支持使用厂商提供的VCP串口驱动程序&#xff0c;可支持Windows、Linux、Android、macOS等操作系统。因CDC类协议和类驱动的原因&#xff0…

多通道振弦数据记录仪在预防地质灾害中的重要性

多通道振弦数据记录仪在预防地质灾害中的重要性 地质灾害是指在地表或岩体内部发生的、由地质原因引起的、对人类生命、财产和环境安全造成威胁或损害的各种灾害。地质灾害的预测和预防对于保障人民生命财产安全、维护社会稳定和可持续发展具有重要的意义。而多通道振弦数据记…

九章云极DataCanvas公司智算中心正式落地

为构建全社会数字经济提供高效的计算底座&#xff0c;向全市场提供高效高速的智算能力&#xff0c;为用户提供算法算力一体化的服务&#xff0c;九章云极DataCanvas公司智算中心落户安徽省马鞍山市&#xff0c;并于9月4日成功举行“马鞍山市花山区垂直行业人工智能大模型训练算…

Easysearch 压缩功能的显著提升:从 8.7GB 到 1.4GB

引言 在海量数据的存储和处理中&#xff0c;索引膨胀率是一个不可忽视的关键指标。它直接影响了存储成本和查询性能。近期&#xff0c;Easysearch 在这方面取得了显著的进展&#xff0c;其压缩功能的效果远超过了之前的版本。本文将详细介绍这一进展。 Easysearch 各版本压缩性…

大屏大概是怎么个开发法(前端)

写在前面&#xff0c;博主是个在北京打拼的码农&#xff0c;从事前端工作5年了&#xff0c;做过十多个大大小小不同类型的项目&#xff0c;最近心血来潮在这儿写点东西&#xff0c;欢迎大家多多指教。 对于文章中出现的任何错误请大家批评指出&#xff0c;一定及时修改。有任何…

Vue 使用vue完成登录+注册前后端交互的实现

前言&#xff1a; 我们上一篇已经讲解了如何使用vue去构建一个SPA项目。今天我们就在昨天的基础之上完成登录注册前后端交互的实现。 我们使用Vue构建登录注册前后端交互的实现有以下好处、意义和效率&#xff1a; 好处&#xff1a; 响应式渲染&#xff1a;Vue采用了虚拟DOM技术…

Coupang走什么物流?Coupang火箭颜色什么意思?——站斧浏览器

coupang物流包括三个选项&#xff0c;分别是“自发货”“CGF”和“CGF LITE”&#xff0c;怎么选择才对自己最有利的呢&#xff1f;coupang火箭颜色什么意思&#xff1f;一起来了解下吧。 coupang走什么物流? ① 自发货 也就是卖家自己找第三方货代公司帮你发货&#xff0c…

C++ - map 和 set 的模拟实现 - 红黑树当中的仿函数 - 红黑树的迭代器实现

简单了解map 和 set 的实现 首先我们要知道&#xff0c;map 和 set 的底层就是 红黑树&#xff0c;但是 STL 当中 &#xff0c;map 和 set 并不是我们想象的&#xff0c;直接使用一个 pair 对象来存储一个 key-value 或者 是 一个 key。具体如下所示&#xff1a; set&#xff…

大数据Flink(八十九):Temporal Join(快照 Join)

文章目录 Temporal Join(快照 Join) Temporal Join(快照 Join) Temporal Join 定义(支持 Batch\Streaming):Temporal Join 在离线的概念中其实是没有类似的 Join 概念的,但是离线中常常会维护一种表叫做 拉链快照表,使用一个明细表去 join 这个 拉链快照表 的 join …

介绍 Docker 的基本概念和优势V2.0

介绍 Docker 的基本概念和优势V2.0 一、Docker 的基本概念1.1 Docker 是什么&#xff1f;1.2 Docker 的组成部分1.3 Docker 的基本概念 二、Docker 的优势1. 轻量级&#xff1a;2. 可移植性&#xff1a;3. 自包含&#xff1a;4. 隔离性&#xff1a;5. 可扩展性&#xff1a;6. 易…

SpringBoot 学习(八)异步任务,邮件发送和定时执行

8. 异步任务 (1) 开启异步注解 // 启动类 EnableAsync SpringBootApplication public class TestApplication {public static void main(String[] args) {SpringApplication.run(TestApplication.class, args);}}(2) 声明异步方法 // service Service public class AsyncSer…

更新node版本运行程序报错

更新了电脑上的node以及npm的版本&#xff0c;出现了一些问题&#xff1a; 1.npm 报错 Class extends value undefined is not a constructor or null 在运行或者安装依赖的时候&#xff0c;出现这个问题的话&#xff0c;可以先下载一个低一级别的node版本&#xff0c;然后升…

安卓生成公钥和md5签名

安卓公钥和md5证书签名 大家好&#xff0c;最近需要备案app&#xff0c;用到了公钥和md5&#xff0c;MD5签名我倒是知道&#xff0c;然而对于公钥却一下子不知道了&#xff0c; 现在我讲一下我的流程。 首先是md5证书签名的查看&#xff0c; 生成了apk和签名.jks后&…

人工智能赋能财务体系架构

我看到这个价格给我的感觉上半部分是一个数据中台&#xff0c;下半部分全部就是机器学习的原理&#xff1b;

Learn Prompt- Midjourney案例:建筑设计

基础结构​ 这是一个非常适合在 V5 中的生产建筑的提示结构。 我们不妨先回顾一下上一章节的通用模板&#xff1a; 主题 背景,环境,氛围 风格 参数 在建筑生成的设定下&#xff0c;我们可以使用 主题详细描述 周边环境 建筑风格或时期、建筑师、设计师和摄影师 参数…