您的位置:首页 > 科技 > 能源 > pnpm workspace使用教程【Monorepo项目】

pnpm workspace使用教程【Monorepo项目】

2025/4/2 0:21:56 来源:https://blog.csdn.net/cdns_1/article/details/140229340  浏览:    关键词:pnpm workspace使用教程【Monorepo项目】

目录

    • 前言
    • 一、pnpm简介
      • 特点:
      • 对比
    • 二、 创建项目
      • 添加文件 `pnpm-workspace.yaml`
      • 目录结构
      • pnpm `workspace: 协议`
      • 修改配置文件
      • 执行 安装
    • 三、命令解析
      • 执行包命令
      • 所有包操作命令
    • 四、实例代码

前言

前面两篇,我们讲了 yarn + workspacelerna , yarn + lerna 的组合已经是现在 monorepo 的通用方案,也是功能最多,最火的方案,如果还没看,可以回顾下

  • Monorepo仓库管理策略之 Lerna
  • Monorepo仓库管理策略之yarn workspaces

一、pnpm简介

pnpm Workspace 是 pnpm 的一个特性,它允许你管理多个包(或项目)作为一个单一的单元。这在开发大型的、由多个包组成的应用程序时非常有用,例如在微服务架构或库的多个版本中。

特点:

  • 节省空间:通过共享依赖项,pnpm 减少了磁盘的使用。
  • 快速安装:由于依赖项的共享,安装过程可以更快完成。
  • 并行安装:pnpm 可以并行安装包,进一步提高效率。
  • 精确的版本控制:pnpm 能够精确控制依赖项的版本,避免版本冲突。

对比

特性/工具pnpm WorkspaceYarn + Lerna
空间节省通过硬链接和符号链接共享依赖,节省空间依赖项存储在每个包中,可能占用更多空间
安装速度并行安装,快速安装依赖项Yarn 缓存机制,但可能不如 pnpm 快
依赖版本控制精确控制,减少依赖冲突需要手动管理依赖版本,可能存在冲突
社区与生态相对较新,社区可能不够成熟成熟的生态系统,广泛的社区支持
工作流管理简单直观,易于配置Lerna 提供复杂的工作流管理
兼容性可能在某些操作系统上存在问题广泛的兼容性,适用于多种环境
自定义与扩展较少的插件,但核心功能强大Yarn 插件系统,允许更多自定义和扩展
易用性配置简单,易于上手配置可能相对复杂,需要更多设置

二、 创建项目

我们以前两篇文章的 ziyu-cart ziyu-user 包来作为 pnpm 的 packages 项目,后面的包我也会上传至git

mkdir pnpm-workspace && cd pnpm-workspace pnpm init 

添加文件 pnpm-workspace.yaml

packages:# all packages in direct subdirs of packages/- 'packages/*'

目录结构

在这里插入图片描述

pnpm workspace: 协议

例如,如果工作区中有 foo、bar、qar、zoo,它们的版本均为 1.5.0,则如下:

{"dependencies": {"foo": "workspace:*","bar": "workspace:~","qar": "workspace:^","zoo": "workspace:^1.5.0"}
}

将转化为:

{"dependencies": {"foo": "1.5.0","bar": "~1.5.0","qar": "^1.5.0","zoo": "^1.5.0"}
}

修改配置文件

我们之前在 ziyu-cart 中 将 ziyu-user 这个包引入了,现在我们修改下引入方式

  "dependencies": {-    "ziyu-user": "0.0.3"+   "ziyu-user": "workspace:*"},

执行 安装

pnpm i 

在这里插入图片描述

三、命令解析

执行包命令

在根目录执行 ziyu-cart 包的 test命令,ziyu-cart 包 是引用了 ziyu-user 包文件

pnpm --filter ziyu-cart test

--filter ziyu-cart : 这是 pnpm 过滤允许您将命令限制于包的特定子集。

在这里插入图片描述

所有包操作命令

# 根项目 安装
pnpm add -D -w rimraf    

在这里插入图片描述

# 执行所有包的del 命令
pnpm --filter "./packages/**" del

在这里插入图片描述


# 移除 ziyu-cart lodash包
pnpm rm  --filter ziyu-cart lodash

在这里插入图片描述

四、实例代码

github pnpm-workspace

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com