lerna一些笔记

为什么要

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容