# BasicTo Lerna
问题
- Lerna 是什么(解决了什么问题)
- Lerna 有什么用
- Lerna 如何使用
- 注意事项
- 参考
# 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) 是一个用git
和npm
优化和管理多个仓库的工具
# 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]
# lerna link
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
模式让各个包的版本独立