如何使用Yarn Workspaces实现Monorepo模式在一个仓库中管理多个项目

        Yarn Workspaces是Yarn提供的一种依赖管理机制,它支持在单个代码仓库中管理多个包的依赖。这种机制非常适合需要多个相互依赖的包的项目,能够减少重复依赖,加快依赖安装速度,并简化依赖管理。下面将详细介绍如何使用Yarn Workspaces。

一、创建项目文件夹

        首先,需要创建一个新的项目文件夹。在终端中执行以下命令:

mkdir my-yarn-workspace
cd my-yarn-workspace
二、初始化根的package.json

        在项目根目录下初始化一个新的package.json文件。执行以下命令:

yarn init -y

        这个命令会创建一个默认的package.json文件,包括常规的项目设置。然后,打开根目录下的package.json文件,添加workspaces字段。编辑后的内容如下:

{"name": "my-yarn-workspace","version": "1.0.0","private": true,"workspaces": ["packages/*"]
}

其中,"private": true确保项目不会意外发布到npm,"workspaces": ["packages/*"]指定所有位于packages文件夹中的子文件夹都是工作空间。

三、创建子包

        在my-yarn-workspace文件夹下创建一个名为packages的新文件夹:

mkdir packages
cd packages

         然后,在packages文件夹中创建两个子包,例如package-apackage-b

mkdir package-a package-b

        接下来,初始化每个子包的package.json文件:

cd package-a
yarn init -y
cd ../package-b
yarn init -y
cd ..

        执行以上命令后,你将拥有两个子包,它们的结构如下:

my-yarn-workspace/
│
├── packages/
│   ├── package-a/
│   │   └── package.json
│   └── package-b/
│       └── package.json
└── package.json
四、安装依赖

        在这两个子包中,你可能需要安装一些依赖。例如,在package-a中安装lodash:

cd packages/package-a
yarn add lodash
cd ../package-b
yarn add lodash
cd ../..

使用Yarn Workspaces时,它们会共享同一份依赖。

五、添加辅助脚本

        你可以在根目录的package.json中添加一些辅助脚本,方便你执行各个子包中的脚本。例如,添加以下内容:

{"scripts": {"start-a": "yarn workspace package-a start","start-b": "yarn workspace package-b start"}
}

         现在,你可以通过以下命令在根目录下运行这些脚本:

yarn start-a
yarn start-b
六、使用Yarn Workspaces的其他功能
  1. 构建和链接子包

    你可以轻松地构建和链接子包。例如,构建所有子包:

    yarn build

    链接子包以进行本地测试:

    yarn link "package-a"

  2. 在特定子包中运行命令

    你可以使用yarn workspace <workspace_name> <command>在指定的包中运行指定的命令。例如,在foo中添加reactreact-dom作为devDependencies:

    yarn workspace foo add react react-dom --dev
  3. 查看项目中的workspace依赖树

    使用yarn workspaces info [--json]查看项目中的workspace依赖树。例如:

    yarn workspaces info
  4. 向指定的包中添加依赖

    使用yarn workspace <workspace_name> add <package>向指定的包中添加依赖。例如,向package-a中添加express

    yarn workspace package-a add express
七、总结

        Yarn Workspaces是管理多包项目的强大工具,它提供了一种高效、有序的方式来组织和构建大型JavaScript项目。通过使用Yarn Workspaces,开发者可以节省时间,提高项目的维护性和可扩展性。希望本文能够帮助读者更好地理解Yarn Workspaces的概念,并在实际项目中有效地应用这些技术。


新时代农民工 

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

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

相关文章

附加共享数据库( ATTACH DATABASE)的使用场景

附加共享数据库&#xff08;使用 ATTACH DATABASE&#xff09;的功能非常实用&#xff0c;通常会在以下几种场景下需要用到&#xff1a; 1. 跨数据库查询和分析 场景&#xff1a; 你的公司有两个独立的数据库&#xff1a; 一个存储了学生信息 (school.db)一个存储了员工信息 …

阿里云ios镜像源

阿里云镜像源&#xff1a;阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 下载centos7

《拉依达的嵌入式\驱动面试宝典》—计算机网络篇(二)

《拉依达的嵌入式\驱动面试宝典》—计算机网络篇(二) 你好,我是拉依达。 感谢所有阅读关注我的同学支持,目前博客累计阅读 27w,关注1.5w人。其中博客《最全Linux驱动开发全流程详细解析(持续更新)-CSDN博客》已经是 Linux驱动 相关内容搜索的推荐首位,感谢大家支持。 《…

用vscode+ollama自定义Cursor AI编辑的效果

在vscode上搜索Continue 添加大语言模型 选择对应的本地模型版本 效果

使用宝塔面板,安装 Nginx、MySQL 和 Node.js

使用ssh远程链接服务器 在完成使用ssh远程链接服务器后 可使用宝塔面板&#xff0c;安装 Nginx、MySQL 和 Node.js 宝塔网站 一、远程链接服务器 二、根据服务器系统安装宝塔 wget -O install.sh https://download.bt.cn/install/install_lts.sh && sudo bash inst…

Android车机DIY开发之软件篇(八)单独编译

Android车机DIY开发之软件篇(八)单独编译 1.CarLauncher单独编译 CarLauncher源码位于 packages/apps/Car/Launcher 用Eclipse ADT 谷歌定制版编译而成&#xff0c;.mk .bp编译 Android13目录如下: alientekalientek:~/packages/apps/Car$ ls Calendar …

SQL进阶实战技巧:统计用户的累计消费金额及VIP等级?

目录 0 问题描述 1 数据准备 2 代码实现 3 问题拓展 问题延伸:查询首次下单后第二天连续下单的用户比率

鸿蒙面试 2025-01-11

ArkTs 和TS的关系&#xff1f; ArkTS&#xff08;方舟开发语言&#xff09;与 TypeScript&#xff08;TS&#xff09;存在紧密联系&#xff0c;同时也有显著区别&#xff1a; 联系 语法基础&#xff1a;ArkTS 在语法层面大量借鉴了 TypeScript &#xff0c;TypeScript 里诸如…

SpringCloud项目搭建快速入门

SpringCloud项目搭建 注意&#xff1a;本项目采用JDK17&#xff0c;且已上传至Gitee&#xff0c;可自行下载 父工程创建方式一 Step1&#xff1a; 创建一个Maven聚合工程ScDemo 创建完成后删除除pom.xml文件外的所有文件及目录 Step2&#xff1a; 设置Mven为本地Maven 博主已进…

vue(2,3), react (16及以上)开发者工具资源

在前端开发的广阔领域中&#xff0c;Vue.js 和 React.js 作为两大主流框架&#xff0c;各自拥有庞大的用户群体和丰富的生态系统。为了帮助开发者更高效地进行调试和开发&#xff0c;Vue Devtools 和 React 开发者工具应运而生&#xff0c;成为这两个框架不可或缺的辅助工具。本…

芯片:为何英伟达的GPU能在AI基础设施领域扮演重要角色?

英伟达的GPU之所以能在AI基础设施领域扮演重要角色&#xff0c;主要源于其硬件架构的优势以及其与深度学习算法的高度兼容性。以下是几个关键因素&#xff1a; 1. 并行计算能力 GPU&#xff08;图形处理单元&#xff09;本质上是为处理大量并行计算任务而设计的。与CPU相比&a…

新手入门 React .tsx 项目:从零到实战

&#x1f680; 新手入门 React .tsx 项目&#xff1a;从零到实战 &#x1f4bb;✨ 如果你是 React 新手&#xff0c;刚接触 .tsx 文件&#xff0c;不要担心&#xff01;跟着这份指南&#xff0c;一步一步来&#xff0c;你很快就能上手了&#xff01;&#x1f447; &#x1f4d…

RabbitMQ 进阶

文章目录 一、发送者的可靠性1.1 生产者重试机制&#xff1a;1.2 生产者确认机制&#xff1a;1.2.1 开启生产者确认&#xff1a;1.2.2 定义 ReturnCallback&#xff1a;1.2.3 定义 ConfirmCallback&#xff1a; 二、MQ 的可靠性2.1 数据持久化&#xff1a;2.1.1 交换机持久化&a…

L4-Prompt-Delta

Paper List PromptPapers:https://github.com/thunlp/PromptPapersDeltaPapers: https://github.com/thunlp/DeltaPapers Programming Toolkit OpemPrompt: https://github.com/thunlp/OpenPromptOpenDelta: https://github.com/thunlp/OpenDelta 一、传统微调方法&#xff1…

【深度学习入门_基础篇】概率论

开坑本部分主要为基础知识复习&#xff0c;新开坑中&#xff0c;学习记录自用。 学习目标&#xff1a; 随机事件与概率、随机变量及其分布、多维随机变量及其分布、大数定律与中心极限定理。 强烈推荐此视频&#xff1a; 概率论_麻省理工公开课 废话不多说&#xff0c;直接…

Vision Transformer (ViT)原理

Vision Transformer (ViT)原理 flyfish Transformer缺乏卷积神经网络&#xff08;CNNs&#xff09;的归纳偏差&#xff08;inductive biases&#xff09;&#xff0c;比如平移不变性和局部受限的感受野。不变性意味着即使实体entity&#xff08;即对象&#xff09;的外观或位…

【云计算】OpenStack云计算平台

OpenStack云计算平台框架搭建 1.先换源 先换成阿里源: curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 2.安装框架 yum -y install centos-release-openstack-train 3.安装客户端 yum -y install python-openstackclient 但…

如何让QPS提升20倍

一、什么是QPS QPS&#xff0c;全称Queries Per Second&#xff0c;即每秒查询率&#xff0c;是用于衡量信息检索系统&#xff08;例如搜索引擎或数据库&#xff09;或请求-响应系统&#xff08;如Web服务器&#xff09;每秒能够处理的请求数或查询次数的一个性能指标。以下是…

Domain Adaptation(李宏毅)机器学习 2023 Spring HW11 (Boss Baseline)

1. 领域适配简介 领域适配是一种迁移学习方法,适用于源领域和目标领域数据分布不同但学习任务相同的情况。具体而言,我们在源领域(通常有大量标注数据)训练一个模型,并希望将其应用于目标领域(通常只有少量或没有标注数据)。然而,由于这两个领域的数据分布不同,模型在…

SQL从入门到实战-1

目录 学前须知 sqlzoo数据介绍 world nobel covid ge game、goal、eteam teacher、dept movie、casting、actor 基础语句 select&from 基础查询select单列&多列&所有列&别名应用 例题一 例题二 例题三 select使用distinct去重 例题四 例题五…