Menorepo
是管理项目代码的一个方式,指在一个项目仓库(repo)中管理多个模块/包(package),不同于常见的每个模块建一个 repo.
Lerna
是一种Monorepo
的解决方案
优点:
缺点:
安装 lerna 工具
npm install lerna -g
初始化一个 lerna 项目
mkdir lerna-democd lerna-demolerna init
生成如下文件:
- package(目录)- lerna.json(配置文件)- package.json(工程描述)
常见命令
lerna init // 初始化 lerna 项目lerna create <name> // 创建一个新的由 lerna 管理的包lerna bootstrap // 安装所有依赖项并连接所有的交叉依赖lerna add axios // 增加模块包到最外层的公共 node_modules中lerna add a --scope=b // 增加模块包到 packages 中指定项目 下面是将 a 模块增加到 b 项目中lerna exec --scope a -- yarn start //在 packages 中对应包下的执行任意命令 下面的命令,是对 packages 下的 a 项目执行 yarn start 命令 ,比较常用,可以把它配置到最外层的 package.json 中如果命令中不增加 --scope a 直接使用下面的命令,这会在 packages 下所有包执行命令rm -rf ./node_moduleslerna exec -- rm -rf ./node_moduleslerna list // 显示所有的安装的包。等同于 lerna lslerna clean // 从所有包中删除 node_modules 目录。不会删除项目最外层的根 node_moduleslerna publish // 在当前项目中发布包。lerna publish 永远不会发布标记为 private 的包(package.json中的”private“: true)