赞
踩
在我之前的开发经历中,并没有实际使用过 Monorepo 管理项目,尽管之前对此有所了解,但并未深入探究。然而,如今许多开源项目都采纳了 Monorepo 方式,对于不熟悉它的开发者来说,阅读和理解这些项目的源码可能会相对困难。所以,我近期简单研究了一下使用 PNPM 搭建 Monorepo 项目的方法。
在软件开发中,随着项目的逐渐庞大和复杂化,管理多个相关联的代码库就变成了一项挑战。这时,Monorepo(单体代码仓)应运而生,它能有效管理多个项目或模块。
Monorepo 是指在一个单一的版本控制系统仓库中管理多个模块/项目的策略。相对于多仓库(Multirepo),它能带来以下好处:
Monorepo 管理方式解决了如下问题:
在终端执行以下命令安装 pnpm:
npm install -g pnpm
创建一个新文件夹作为 Monorepo 的根目录,并初始化仓库:
mkdir my-monorepo
cd my-monorepo
pnpm init
在根目录下创建 pnpm-workspace.yaml
文件来配置工作区:
<root>/packages/**
目录下packages
packages:
- 'packages/*'
在 packages
文件夹下创建子项目,并进行初始化:
mkdir packages/project-a
cd packages/project-a
pnpm init -y
下面是一个有多个包的目录结构的演示:
使用 pnpm 的 pnpm add
命令在子项目中添加依赖:
cd packages/project-a
pnpm add lodash
方法1:
如果 project-a
依赖于 project-b
,可以直接执行命令操作:
cd packages/project-a
pnpm add project-b
方法二:
或者直接编辑 project-a
项目的 package.json
{
"name": "project-a",
// ...
"dependencies": {
// 添加 project-b , 指定为 `workspace:*`
"project-b": "workspace:*",
"project-c": "workspace:*"
}
}
添加好后,执行 pnpm install
即可。
pnpm install
在根目录下,使用 pnpm 运行命令(比如测试)针对所有项目:
pnpm recursive run test
# -r 是 recursive 的命令缩写:
pnpm -r run test
例如,我在所有 package 下都加了 print
命令,然后在根目录执行 pnpm -r run print
除了 pnpm,还有其他几种流行的 Monorepo 管理工具:
通过上述步骤,我们可以看出来使用 pnpm 搭建 monorepo 项目非常简单,不需要额外引入其他依赖即可完成 monorepo 仓库的搭建。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。