rush.js基础

Rush方案
  • 多项目并存下,Symlink实现依赖只需一套,无重复安装
  • 提供项目间的自动link
  • 多线程构建多项目,加快构建速度
  • 自动检测有改动的项目,按配置产出版本号和changelog
Symlink(符号链接)

Rush一次性安装全部原始依赖在Root下的common/temp目录下,从该目录下提供Symlink给单个项目引用。
Symlink只是提供指针,这样保证了对于依赖本身的更新会实时展现在项目中,且依然保有原有各项目的node_modules的结构
在这里插入图片描述
Rush支持pnpm
Symlink帮助Rush对于依赖重复安装的问题做的更加可控(消除phantom dependencies)和彻底(消除doppelgangers)

phantom dependencies
指没有在package.json里制定安装,却可以在项目中被引用的依赖项。这可能会导致依赖版本不相容和依赖丢失的情况。

发布方案

  • rush.json中可配置区分需要发布和不必要发布的包
  • 根据上面配置,rush publish自动升级版本号并发布有过更新的包,这两个也可分开执行
  • rush change帮助产出简介规范的change log,没有change log的改动会导致CI失败

Rush好处

  • 规范性强,配置细分、各司其职
  • 消除phantom,可控性更强
  • 消除doppelgangers减少依赖冗余更彻底
  • 可以实现更智能的版本选择
  • 支持npm/yarn/pnpm,其中pnpm是Lerna不支持的
  • 对change log的更新支持更好,Lerna则需要扩展

Lerna好处

  • 当前使用最广,经过各大型项目检验
  • 配置简单,可扩展性好
  • 版本号管理有成熟的fixed/independent两种模式,Rush的Version Policy目前还是实验性功能。

结论

  • rush的使用是咦monorepo风格为前提的
  • 通过symlink实现减少重复依赖和消除phantom、doppelgangers
  • 提供了专业的改动和发布管理方案
  • 接入方便简洁
  • 对比Lerna更专业,但优势不明显,如果没有Rush优势的需求,更建议使用Lerna

了解Rush还需要了解的知识点:

  • npm:如何发布自己的npm包
  • pnpm:rush支持的包管理器对pnpm的支持比较完善。部分npm包支持有问题,所以需要知道如何配置
  • git
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值