简介

将大型代码库分成单独的独立版本化的软件包对于代码共享非常有用。但是,跨许多存储库进行更改很麻烦且难以跟踪,并且跨存储库的测试变得非常复杂。

为了解决这些(以及许多其他)问题,一些项目会将其代码库组织到多包存储库中(有时称为monorepos)。像Babel,React,Angular, Ember,Meteor,Jest等项目,以及许多其他项目,都在一个存储库中开发了所有软件包。

Lerna是一种工具,可以优化使用git和npm管理多包存储库的工作流程。

Lerna还可以减少开发和构建环境中大量软件包副本的时间和空间要求,这通常是将项目分成许多单独的NPM软件包的不利方面

入门

以下说明适用于Lerna3.x。对于新的Lerna项目,我们建议使用它而不是2.x。

首先,使用npm将Lerna安装为项目的开发依赖项。

$ mkdir lerna-repo &&  cd  $ _
$ npx lerna init

这将创建一个lerna.json配置文件以及一个packages文件夹,因此您的文件夹现在应如下所示:

lerna-repo/packages/package.jsonlerna.json

如何使用

Lerna允许您使用以下两种模式之一来管理项目:固定或独立。

固定/锁定模式(默认)

固定模式的Lerna项目在单个版本行上运行。版本位于密钥lerna.json下项目根目录下的文件中version。当您运行时lerna publish,如果某个模块自上次发布以来已被更新,它将被更新为您要发布的新版本。这意味着您仅在需要时才发布软件包的新版本。

注意:如果您的主要版本为零,则所有更新均视为中断。因此,lerna publish以主要版本零运行并选择任何非预发行版本号将导致为所有软件包发布新版本,即使自上次发行以来并非所有软件包都已更改。

这是Babel当前使用的模式。如果要自动将所有软件包版本捆绑在一起,请使用此选项。这种方法的一个问题是,对任何软件包进行重大更改都会导致所有软件包都具有新的主要版本。

独立模式

lerna init --independent

独立模式Lerna项目允许维护者彼此独立地增加软件包的版本。每次发布时,都会提示您已更改的每个软件包,以指定是补丁,次要,主要还是自定义更改。

独立模式使您可以更具体地更新每个软件包的版本,并使一组组件有意义。将该模式与语义释放之类的东西相结合,将使其痛苦减轻。(已经在atlassian / lerna-semantic-release上对此进行了工作)。

设置version在关键lerna.jsonindependent在独立模式下运行。

参考资料

Lerna官方文档

多包管理工具Lerna(莱尔纳)相关推荐

  1. 多包管理工具lerna搭建项目---基本常用命令

    基本常用命令 Step 1 安装Lerna 推荐全局安装,因为会经常用到 lerna 命令 npm i -g lerna Step 2 项目初始化 lerna init 其中 package.json ...

  2. Python包管理工具Distribute的安装

    Python包管理工具Distribute的安装 Python的包管理工具常见的有easy_install, setuptools, 还有pip, distribute,那麽这几个工具有什么关系呢,看 ...

  3. pip包管理工具-install执行流程简单查看

    pip概述 pip是python提供的包管理工具,该工具提供了对python包的查找.下载.安装与卸载等功能的工具,当前是python中比较主流的管理工具. pip下载安装包的概述 pip工具的本质通 ...

  4. Python的包管理工具Pip

    接触了Ruby,发现它有个包管理工具RubyGem非常好用,而且有非常完备的文档系统http://rdoc.info 发现Python下也有相同的工具,包含easy_install和Pip.只是,我没 ...

  5. Java基础-Eclipse第三方安装包管理工具之Maven

    Java基础-Eclipse第三方安装包管理工具之Maven 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 玩过Linux的小伙伴应该都知道yum吧,我们只要把搭建好的yum仓库配 ...

  6. Pipenv – 超好用的 Python 包管理工具

    pipenv 是什么 pipenv 是 python 官方推荐的包管理工具,集成了 virtualenv.pyenv 和 pip 三者的功能于一身,类似于 php 中的 composer. 我们知道, ...

  7. Python 包管理工具解惑

    本文转载自http://zengrong.net/post/2169.htm,感谢原作者. 一.困惑 作为一个 Python 初学者,我在包管理上感到相当疑惑(嗯,是困惑).主要表现在下面几个方面: ...

  8. Helm包管理工具(简介、安装、方法)

    认识Helm 每次我们要部署一个应用都需要写一个配置清单(维护一套yaml文件),但是每个环境又不一样.部署一套新的环境成本是真的很高.如果我们能够使用类似于yum的工具来安装我们的应用的话那就太好了 ...

  9. 使用 EthPM 包管理工具

    使用 EthPM 包管理工具 EthPM 是 Ethereum 提供的软件包注册表.它遵循ERC190规范来发布和使用智能合约包, 并获得了许多不同的Ethereum开发工具的广泛支持.为了表示我们的 ...

最新文章

  1. iOS架构-静态库.a的脚本化打包及使用(3)
  2. 【控制】《自动控制原理》胡寿松老师-第4章-线性系统的根轨迹法
  3. 8086的两种工作模式_Buck变换器工作原理
  4. ActionScript 3.0 Step By Step系列(四):来自面向对象开发之前的呐喊:“学会写可重用的代码”...
  5. ssh免密登陆失败原因总结(Linux)
  6. java cookie secure_Cookie的Secure属性
  7. mybais逆向工程快速生成实体和基本xml
  8. sqlalchemy连接mysql数据库_史上超详细的flask_sqlalchemy连接mysql数据库
  9. OpenCV-风景—天空滤镜
  10. windows系统禁止更改服务启动类型_能源管理系统SMARTCOLLECT常见问题解答
  11. vb源代码框中不能用滚轮的解决办法
  12. 卸载WPS后如何修复Office文档图标显示异常
  13. 超大TIF图片分割成一百张较小的图片
  14. linux下的chm阅读器?
  15. 电脑自带office查看攻略
  16. 概率论05 - 随机变量及其分布函数
  17. OpenLayers3基础教程——OL3基本概念
  18. ddz指标最佳数值_大单分差指标ddz如何解析资金流向与筹码分布
  19. 利用Gensim训练关于英文维基百科的Word2Vec模型(Training Word2Vec Model on English Wikipedia by Gensim)
  20. 现在啥软件都有开源,BI 呢?

热门文章

  1. 一份很哇塞的产品经理述职报告(附PPT下载)
  2. 禅道项目管理软件是什么(一)
  3. 在手机屏幕上移动APP的两种方式
  4. Maxwell和Simplorer联合仿真设置注意事项
  5. 神马笔记 版本1.8.0——删除笔记/文件夹·技术细节篇
  6. 前窗玻璃膜贴了一周还有气泡_新车前挡风玻璃贴膜后有气泡几天能下去
  7. Excel·VBA工作簿拆分所有工作表单独保存
  8. iOS小技能:app侧登录流程【上篇】 (前置知识)
  9. Laragon 开机启动自启创建失败
  10. 分治算法--L型骨牌棋盘覆盖