lerna publiash 异常处理

915 阅读2分钟

使用了几次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生成好版本