Skip to content

lerna

Lerna.js 是一个基于 Git 和 npm 的多包管理器,用于管理具有多个 npm 包的 JavaScript 项目。它可以帮助开发人员在单个代码库中维护多个包,从而更轻松地协调代码和版本控制,并简化跨包依赖性的管理。

Lerna.js 可以自动化一些常见的任务,例如同步更改多个包的版本号、同时发布多个包等。它还提供了许多其他功能,例如自定义的工作流程、版本升级的策略、并行化构建等。Lerna.js 可以显著减少多包项目的管理难度,提高开发效率。

常用指令

bash
lerna init # 初始化 Lerna.js 项目。
lerna create <package-name> # 创建一个新的子包。
lerna bootstrap # 安装依赖项并链接相互依赖的子包。
lerna add <package-name> [--scope=<scope>] [--dev] # 将指定的包添加为依赖项。可选参数 --scope 用于指定要添加依赖项的子包,--dev 用于将包添加为开发依赖项。
lerna run <script-name> [--scope=<scope>] # 在指定的子包或所有子包中运行 npm 脚本。
lerna exec <command> # 在所有子包中执行指定的 shell 命令。
lerna clean # 清除项目中的所有 node_modules 目录和 package-lock.json 文件。
lerna publish # 将所有更新过的子包发布到 npm 仓库中。
lerna changed # 列出自上次发布以来被更新的子包。
lerna diff [package-name] # 显示自上次发布以来指定子包的差异。

创建 monorepo 项目

bash
# 第一步:初始化 Lerna.js 项目。
lerna init

# 第二部:创建一个新的子包。
lerna create <package-name>

# 第三步:添加依赖。可选参数 --scope 用于指定要添加依赖项的子包,--dev 用于将包添加为开发依赖项。
lerna add <package-name> [--scope=<scope>] [--dev]

# 第四步:执行
lerna run <script-name> [--scope=<scope>]

导入

lerna import 命令是将外部包作为一个新的 Git 仓库导入到 Lerna 项目中。因此,被导入的包必须是一个 Git 仓库。如果要导入一个非 Git 仓库的包,可以先将其转化为一个 Git 仓库,再使用 lerna import 命令进行导入。

bash
lerna import <dir-name> # 导入

安装依赖

bash
lerna add <package-name> [--scope=<scope>] [--dev] # 为指定子包添加依赖,并不会安装
lerna bootstrap # 安装子依赖,自动执行每个包中的 npm install,将包内的依赖安装好