lerna 发布失败后的解决方案
lerna 作为多个包依赖的管理解决方案,确实解决了很多痛点,我目前在工作和生活中已经大量使用了 lerna,但同时也会遇到一些问题,发布失败后的问题是遇到比较频繁的问题,因此记录一下
lerna publish
主要做了以下几件事:
- 检查从上一个
git tag
之后是否有提交,没有提交就会显示No changed packages to publish
的信息,然后退出 - 检查依赖了修改过的包的包,并更新依赖信息
- 提交相应版本的
git tag
- 发布修改的包及依赖它们的包
看上去非常理想,但是使用起来可能很蛋疼,往往出问题的可能就是最后一步,发布包的问题,有可能你的网络情况有问题,有可能你没有登录npm(包括公司内部的 registry ),如果你需要发布到指定的 registry
上,你可以在 lerna.json
上指定:
"command": { "publish": { "message": "chore(release): publish", "registry": "http://legos.wq.jd.com/legosv5/registry/" } },
关于这个问题,社区也有相应的讨论,可以在 lerna
项目的issue中找到,如 524、1894
对此,lerna 到目前为止并没有提供很好的解决方案。
你可以在你这次失败之后使用 from-git
参数,即 lerna publish from-git
或者我们可以手动回退 git 到 release 之前的版本,并删除相应的 git tag
,如下:
git reset --hard HEAD~1 && git tag -d $(git log --date-order --tags --simplify-by-decoration --pretty=format:'%d' | head -1 | tr -d '()' | sed 's/,* tag://g')
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论