# BasicTo Lerna

问题

  1. Lerna 是什么(解决了什么问题)
  2. Lerna 有什么用
  3. Lerna 如何使用
  4. 注意事项
  5. 参考

# Lerna 是什么

问题背景 当代码仓库多了之后,不便于管理和开发,所以存在两种解决方案:

  • MultiRepo
  • MonoRepo

Lerna 是 MonoRepo 的一种解决方案

Lerna is a tool that optimizes the workflow around managing multi-package repositories with git and npm

解释:Lerna (opens new window) 是一个用gitnpm优化和管理多个仓库的工具

# Lerna 有什么用

Lerna 解决多个包互相依赖,且发布需要手动维护多个包的问题

# 两种模式

Lerna 存在两种模式,Fixed/Locked mode 固定模式 和 Independent mode 独立模式

Fixed/Locked mode (default)

Independent mode

使用独立模式时,各个包的版本各自独立,不会随着 lerna 的版本升级,可以看情况使用

lerna init --independent

# 使用

# 开始

$ mkdir lerna-repo && cd $_
$ npx lerna init

执行后的结果

lerna-repo/
  packages/
  package.json
  lerna.json

# 新建包

lerna create [package]

lerna create @star/

# 添加依赖

//为所有包添加依赖
lerna add [dependency]


//为指定软件包添加依赖
lerna add module-1 --scope=module-2

//作为devDependency
lerna add module-1 --scope=module-2 --dev

//作为peerDependency
lerna add module-1 --scope=module-2 --peer

# 发布

lerna publish

# 命令

# lerna publish

Publish packages in the current project

发布包

lerna publish

# lerna bootstrap

Link local packages together and install remaining package dependencies

链接本地包并且安装其余的依赖

lerna bootstrap

安装依赖

# lerna init

Create a new Lerna repo or upgrade an existing repo to the current version of Lerna

初始化一个 Lerna 项目

lerna init

# lerna add

Add a dependency to matched packages

给指定的包添加依赖

lerna add <package>[@version] [--dev] [--exact] [--peer]

# lerna clean

Remove the node_modules directory from all packages

删除包下的node_modules文件夹

lerna clean

# lerna create

Create a new lerna-managed package

创建一个 lerna 管理的包类型

lerna create [package-name]

Symlink together all packages that are dependencies of each other

将软件包的各个依赖链接

lerna link

# lerna version

Bump version of packages changed since the last release

升级版本

lerna version 1.0.1

# lerna list

List local packages

列出本地的包

lerna ls

# lerna change

List local packages that have changed since the last tagged release

列举本地包的变更

lerna changed

# lerna diff

Diff all packages or a single package since the last release

检查本地包的变更

lerna diff [package]

# lerna exec

Execute an arbitrary command in each package

执行脚本命令

lerna exec -- <command> [..args]

# lerna run

Run an npm script in each package that contains that script

运行 npm 命令

lerna run

# lerna info

Print local environment information

输出环境信息

lerna info

# 注意事项

# Lerna 的两个模式

Lerna 的两个模式是不同的,默认情况下采用Fixed/Locked mode模式,那么软件包的版本会跟随 Lerna 的版本升级,可以使用Independent模式让各个包的版本独立

陕ICP备20004732号-3