使用了几次lerna,这里主要记录下常见问题及解决方法,基础搭建教程网上很多
这里使用的是lerna 4.0版本
第一次发包
lerna publish from-package
第一次发包如果直接运行lerna publish 会在原基础上增加版本号,比如开始写的1.0.0,那么直接使用lerna publish 默认是会增加版本号的;
发包失败后继续使用原版本号怎么处理?
使用lerna publish from-package
lerna publish
正常发包直接使用lerna publish,会出现选择版本的交互
也可以使用参数快速设置,'major', 'minor', 'patch', 'premajor', 'preminor', 'prepatch', 'prerelease', 'from-git', or 'from-package'.
前面其中和上面选项一一对应;
form-package:当你需要使用package.json中的版本的时候使用,比如上面提到的第一次发包和发包失败后的处理方法;
from-git:这个是配合lerna version使用的,把已经生成的好的版本发不上去;
lerna version
生成预发版本,不发布,需要配合lerna publish from-git使用,和lerna publish相比只是少了发布这一步;
有@的私有包问题:
error You must sign up for private packages : @***/***
这个问题其实不是lerna的问题是npm包管理的问题,npm官方规定在发布带有@工作空间的包是默认是私有空间的包,而私有工作空间是收费的。官方也给出了解决方案就是设置--access public,告诉npm我这是开源的包,不是私有包。
所以我们要解决的是在发包的时候怎么配置--access public。
命令行解决
yarn publish --access public
这种方案只适合直接使用yarn或npm发包的方式,不适用lerna
配置package.json
在每个子包下的package.json中配置
"publishConfig": { "access": "public"},
关于只想发布其中一个包的问题
这个问题感觉更多的是代码管理的问题,从lerna的更新机制来说,有变更就是需要更新的这个是没问题的,而且还需要进行依赖分析,从这个角度来说是不应该出现跳过更新的情况的;那么要怎么避免或者怎么处理呢?
-
问题(需求)修复拆分更细的粒度,一个变更应该只做一件事情
-
合理使用git的暂存功能,更推荐分支管理
-
合理的分支管理
-
cd到子目录下手动发布,这里最好先通过lerna version生成好版本