为什么要
01.要维护两个package。分别为module-1,module-2
02.module-1是依赖module-2的。
03.如果module-2有修改,需要发布。
04.需要:修改module-2版本号,发布;修改module-1的依赖关系,修改module-1的版本号,发布。
05.如果要维护的包更多,依赖关系更复杂,想想工作量有多大
即:
01.改版本号
02.发布依赖
它是什么
为开发人员提供一种管理多个packages javascript项目的方式
01.自动解决packages之间的依赖关系
02.通过git 检测文件改动,自动发布
03.根据git 提交记录,自动生成CHANGELOG
如何使用
环境准备
01.lerna,是通过git来进行代码管理的。首先要确保本地有正确的git环境。如果需要多人协作开发,请先创建正确的git中心仓库的链接。
02.管理的package是要发布到官网还是公司的私有服务器上,都需要正确的仓库地址和用户名。
03.全局安装lerna
基础流程
::<<eof
#创建工程
mkdir lerna-demo
cd lerna-demo
lerna init
#创建某包
cd lerna-demo/packages
mkdir module-1
cd module-1
npm init -y
#lerna create <name>
#安装依赖
lerna bootstrap
#发布工程
git remote -v
lerna publish
eof
全量发布
单量发布
::<<eof
lerna init --independent
eof
获取帮助
::<<eof
lerna --help
eof
一些命令
::<<eof
#创建工程
lerna init
lerna init --independent
#安装依赖
#2 所有的包都装上
lerna add eslint
#2 只有某个包装上
lerna add eslint --scope=package1
#2 只有某些包装上
lerna add eslint packages/prefix-*
#创建类库软链
#下拉远程依赖
lerna bootstrap
#导入本地某包
lerna import <pathToRepo>
#发布某包
lerna publish
lerna publish --npm-tag latest
lerna publish --npm-tag v1.0.0
lerna publish --canary
lerna publish --skip-git
#检查变化
lerna changed
lerna diff [package?]
#运行命令
lerna run [script]
#列出类库
lerna list
eof
包的描述
::<<eof
eof
最佳实践
01.单量发布
02.根据Git提交信息,自动生成changelog
03.代码校验
04.代码格化
05.提交检查
06.版号检查
一些问题
::<<eof
###
#问题:打包太慢
#描述:执行lerna bootstrap的时候奇慢无比
#分析:
#原因:通常是因为在每个独立包中都重复安装了公共依赖。
#解决:
#01.将所有公共使用的包,如react,lodash之类的移到根目录的package.json中去
#02.并使用lerna bootstrap --hoist命令进行安装。
#参考:https://juejin.im/post/5c7491cae51d457fc564d6ee#heading-17
##
###
#问题:多个包版本依赖不一致
#描述:比如,A包需要依赖1.0的lodash, 而B包则需要依赖2.0的lodash。
#分析:
#原因:
#解决:
#01.可以尝试使用npm包管理器提供的peerDependencies选项来固定一个版本号。
##
eof
参考文献
lerna-offical-docs:readme.md
破晓前.lerna管理前端packages的最佳实践.juejin,2018-03-02
lerna-offical-docs