[PNPM Workspace] 搭建Monorepo工程

news/2025/3/31 9:09:12/文章来源:https://www.cnblogs.com/Answer1215/p/18798105

pnpm + workspace

前置知识

思考🤔:什么是工作空间?

答案:工作空间可以看作是一个共享的区域,所有用于工作的资源都可以从这个区域获取到。

生活中工作空间

在这个工作空间中,通常会包含与工作相关的所有工具和资源,比如办公桌、电脑、文具和文件柜等。这个工作空间是一个集中完成特定任务的地方,所有需要用到的东西都可以在这里找到,方便你高效地完成工作。

16853413444404

软件开发中的工作空间

在软件开发中,工作空间通常指一个用于组织和管理项目文件、资源和工具的逻辑容器。它通常是一个文件夹结构,用于将相关的项目文件、代码、设置和其他资源集中放置在一起。

工作空间的概念在不同的编程语言和开发工具中可能略有不同,但其基本目标都是提供一个集中式环境,以帮助开发者管理和协同开发多个项目。主要功能包括:

  • 组织和管理项目文件
  • 跨项目共享设置和工具
  • 支持协同开发

pnpm中的工作空间

在 pnpm 中,工作空间就是一个管理多个包的环境,它通过独特的依赖管理方式极大地提高了效率。pnpm 的工作空间支持符号链接和硬链接机制,使得不同包之间能够高效地共享依赖,同时保证每个包的独立性。

pnpm工作空间特点:

  • 高效的依赖管理
  • 节省磁盘空间
  • 跨项目的高效协作

pnpm 的工作空间为大型 Monorepo 项目提供了一个强大而灵活的开发环境,使得管理和开发多个包变得更加简单和高效。

pnpm中定义工作空间

在根目录有一个 pnpm-workspace.yaml 的文件,该文件用于定义哪些包会被包含在 workspace 工作空间中,默认情况下,所有子目录下的所有包都会被包含在 workspace 里面。

示例:

packages:# packages/ 下所有子包,但是不包括子包下面的包- 'packages/*'# components/ 下所有的包,包含子包下面的子包- 'components/**'# 排除 test 目录- '!**/test/**'

注意这里表示包范围的语法使用的是 Glob 表示法。

实战演练

创建基于 pnpm + workspace 的 Monorepo 工程,并在工程中封装一个公共的函数库。

安装依赖到工作空间里面:

pnpm add <包名> --workspace-root
or
pnpm add <包名> -w

安装工作空间的一个包到工作空间另一个包里面:

pnpm add <包名B> --workspace --filter <包名A>

该命令表示将 B 包安装到 A 包里面,也就是说 B 包成为了 A 包的一个依赖。其中 B 包后面的 --workspace 参数表示该包来自于工作空间,而非 npm 远程仓库,--filter 表示安装到 A 包里面。


Repo

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

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

相关文章

欧拉22.03系统freerdp安装

欧拉22.03系统freerdp安装 1、按照欧拉22.03版本最小化安装,系统安装后安装xfce桌面环境 使用默认yum源,不用更新系统 1)安装字库 # dnf install dejavu-fonts liberation-fonts gnu-*-fonts google-*-fonts2)安装Xorg # sudo dnf install xorg-*3)安装XFCE及组件 # sudo …

leetcode每日一题:最小化字符串长度

题目 2716. 最小化字符串长度 给你一个下标从 0 开始的字符串 s ,重复执行下述操作 任意 次:在字符串中选出一个下标 i ,并使 c 为字符串下标 i 处的字符。并在 i 左侧(如果有)和 右侧(如果有)各 删除 一个距离 i 最近 的字符 c 。请你通过执行上述操作任意次,使 s 的长…

PVE 状态信息查询

PVE 状态信息查询 2025年1月8日 14:38 存储列表查询 #pvesm status 例子:pvesm status | awk NR>1{print$1":\t"$3"\t"$7} ZFS文件系统查询 #zpool status 例子:zpool status | sed -n /NAME/,/^$/p | sed -n s/\t//p 以下操作必须开启虚拟机选项…

模型上下文协议(MCP)简介

模型上下文协议(MCP)简介 人工智能的快速发展,特别是大型语言模型(llm),在生成类人文本、解决复杂问题和提高各行业生产力方面释放了前所未有的潜力。然而,一个持续存在的挑战仍然存在:这些模型通常与为现代工作流程提供动力的实时动态数据隔离。将 AI 连接到外部系统-…

TS学习-1

TS简介TypeScript由微软开发,是基于JavaScript的一个扩展语言。 TypeScript 包含了 JavaScript 的所有内容,即: TypeScript 是 JavaScript 的超集. TypeScript 需要编译为 JavaScript ,然后交给浏览器或其他 JavaScript 运行环 境执⾏。 TS静态检查,不需要运行就可以…

出海企业数字化为什么需要双层架构ERP?工博深度解析SAP ERP公有云方案

企业海外业务扩张时,可能由于文化差异、经验差异、合规要求和不断变化的地理政治环境等因素,使总部系统的在海外的推广充满挑战。双层架构ERP通过分层部署策略,帮助企业在保持总部控制力的同时,赋予子公司敏捷性与创新力。Gartner将其定义为IT双模式,第1层专注于业务流程中…

PVE RAID模拟恢复案例

PVE RAID模拟恢复案例 2024年10月10日 14:28 https://www.bilibili.com/read/cv32149324/ 1、正常环境现象,看raid磁盘信息和状态 root@pve:/var/lib/vz/dump# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 238.5G 0 disk ├─sda1 8:1 0 1007K 0 part ├─sda2 …

23593243

2353243谢芷欣

27.7K star!这个SpringBoot+Vue人力资源管理系统,让企业开发事半功倍!

`微人事(vhr)`是一款基于**SpringBoot+Vue**全栈技术打造的企业级人力资源管理系统,采用前后端分离架构设计,整合了Redis缓存、RabbitMQ消息队列、WebSocket实时通信等12+项企业级技术方案。项目自开源以来已获得**27.7K星标**,被广泛应用于中小企业的人事管理系统搭建。嗨,…

如何告别电脑卡顿烦恼?90%人未必知道的远程操作1分钟学会!

不知道你们有没有经历过这样的困扰,当电脑使用了一段时间后发现就不再像刚购买时那么丝滑流畅了?卡顿、等待程序、界面响应的情况常有发生,一次两次或还可接受,多次出现可就要令人头疼不已了。 无论是处理工作文件过程中的突然卡死,还是畅玩游戏时的画面冻结,都会严重影响…

SAP商业AI实测:AI如何升级企业全球化运营能力?

在全球化的浪潮中,企业如何快速应对多地区、多规则的复杂挑战?答案或许藏在AI技术的深度应用中。据IDC报告,目前全世界仅有不到20%的企业使用生成式AI,但企业每投入1美元却能获得高达3到10倍的回报!AI的潜力究竟如何释放?SAP的“AI+流程+数据”模式,给出了解决方案。 SA…