lerna入门
本文首发于:https://www.kelen.cc/posts/lerna-study
lerna是什么
在lerna官网上描述到,lerna 是一种工具,针对git和npm管理多软件包代码仓库的工作流程进行优化。
为什么要使用它?
主要为了解决项目之间包(package)的依赖关系,比如大型项目里面,我们会把项目分成若干个模块包,各个模块包之间相互引用,这时候如果一个包(A)的版本做了变更,其他依赖的包都需要针对这个包(A)的版本进行更改,可想而知,工作量非常大而且还容易遗漏。
目前很多大型项目 Babel 等等。都会使用 lerna 来管理项目包。
lerna作用总结
- 解决packages之间依赖变动自动同步更新
- git提交改变,自动发布,自动生成变更日志
lerna-repo/
packages/
package.json
lerna.json
lerna项目初始化
首先需要全局安装lerna
npm install lerna -g
我们来创建一个项目和 package.json
mkdir lerna-example && yarn init// package.json
{
"name": "lerna-example",
"private": true,
"workspaces": [
"packages/*"
],
"version": "1.0.0",
"main": "index.js",
"author": "kelen*/>",
"license": "MIT"
}
然后 lerna.json 新增两个配置
{
...
"useWorkspaces": true,
"npmClient": "yarn"
}
接下来创建两个包,分别为 module-a 和 module-b
// module-a/index.jsconst {
add
} = require('module-b');
console.log(add(1, 2, 3))// module-b/index.jsmodule.exports = {
add(...args) {
return args.reduce((prev, curr) => prev + curr, 0);
}
}
模块之间依赖
上面的 module-a 引入了 module-b 的
add
方法,我们怎么把依赖给关联起来呢?可以通过 lerna add
命令lerna add module-b --scope=module=a
运行一下,报错了,错误信息如下
文章图片
原因的意思是,lerna命令的scope值错误导致过滤对应包名后,找不到对应的packages,scope值应该为对应包名即package.json中的name
接下来我们为各自的包新建 package.json 文件,通过
yarn init
即可// module-a/package.json
{
"name": "module-a",
"version": "1.0.0",
"description": "module a",
"main": "index.js",
"author": "kelen",
"license": "MIT"
}
这时候再执行
lerna add module-b --scope=module-a
,模块的依赖就关联起来了。文章图片
参考资料 lerna官网
【lerna入门】lerna指令详解
lerna中文文档
本文为原创,未经授权,禁止任何媒体或个人自媒体转载
推荐阅读
- Android中的AES加密-下
- Spark|Spark 数据倾斜及其解决方案
- 心系苍生直言进|心系苍生直言进 桃李不言自成蹊 ——读《杜立本文集》有感
- 陷入父母的心理战,孩子被彻底打败
- typeScript入门基础介绍
- Python专栏|数据分析的常规流程
- 第六章|第六章 Sleuth--链路追踪
- Android|Android sqlite3数据库入门系列
- Python3|Python3 MySQL 数据库连接
- Android下的IO库-Okio源码解析(一)|Android下的IO库-Okio源码解析(一) 入门