什么是 Lerna?
Lerna 是一个优化基于 git + npm 的多包项目管理工具。它可以让你在一个仓库(repository)中管理多个包(package),从而让你的开发过程更加流畅。
为什么使用 Lerna?
在开发脚手架项目时,我们通常需要管理多个相互关联的 npm 包。使用 Lerna 可以带来以下好处:
- 自动管理包之间的依赖关系
- 统一的版本发布流程
- 简化包的链接和测试
- 优化 git 和 npm 的操作命令
Lerna 项目初始化
# 全局安装
npm i lerna -g
# 创建项目目录
mkdir my-cli && cd my-cli
# 初始化 lerna 项目
lerna init
初始化后的目录结构:
my-cli/
packages/
package.json
lerna.json
创建子包
# 创建 package
lerna create @my-cli/core
lerna create @my-cli/utils
# 目录结构
my-cli/
packages/
core/
package.json
utils/
package.json
package.json
lerna.json
配置 lerna.json
{
"packages": [
"packages/*"
],
"version": "independent",
"npmClient": "npm",
"command": {
"publish": {
"ignoreChanges": ["ignored-file", "*.md"],
"message": "chore(release): publish"
},
"bootstrap": {
"ignore": "component-*",
"npmClientArgs": ["--no-package-lock"]
}
}
}
常用命令
# 安装依赖
lerna bootstrap
# 清理依赖
lerna clean
# 执行脚本
lerna run <script>
# 发布版本
lerna publish
# 查看变更
lerna changed
# 执行命令
lerna exec -- <command>
开发工作流
-
在 packages 目录下创建子包
-
在子包中开发功能并本地测试
-
提交代码,执行 lerna changed 查看变更
-
执行 lerna publish 发布新版本
-
其他包通过 npm 安装最新版本使用
最佳实践
-
合理划分包的功能和职责
-
遵循 semver 版本规范
-
编写完善的单元测试
-
规范 commit message
-
及时更新文档
总结
Lerna 是一个强大的多包管理工具,可以显著提升脚手架项目的开发效率。合理使用 Lerna 可以让项目结构更清晰,发布流程更规范。
希望这篇文章对你理解和使用 Lerna 有所帮助。如果觉得有用请点赞转发,如有问题欢迎在评论区讨论。