使用lerna的介绍与用法

4,864 阅读2分钟

什么是lerna

lerna是由babel团队出的一个多包管理的工具,以前的开发模式是一个项目一个仓库,管理起来比较困难, 尤其有系统内部包调用的时候,发布比较麻烦,所以更好的管理包管理的话, 所以推出了lernaJS, 使用monorepo的概念, 像现在的vue-cli, create-react-app 等都是用到了lerna

如何搭建lerna

安装lerna

    yarn global add lerna
    or 
    npm install lerna -g

创建项目

    mkdir 项目名
    lerna init

项目结构说明

     |- package 包
     |- lerna.json 配置文件
     |- package.json

lerna 优缺点

优点

  • 节约了大量的存储空间
    1. 如果多个项目都需要依赖react, react-dom的情况下, node_modules 会出现大量的冗余
    2. 方便调试, 多个项目仓库情况下以npm link 到全局导入, 使用Lerna不需要了

缺点

  • 由于所有的源码都放在一块, 那么就会导致项目启动测试的时间是比较长的

lerna 的处理机制

  • 固定模式
  • 独立模式

固定模式 (fixed)

所有的包都是固定的版本, 每次升级的话都会进行统一升级, 不管是否进行改动

独立模式(independent)

每个包都是固定的版本号, 每次都只升级改动的内容的版本号,未改动包的内容版本号则不会进行升级

使用方式

在lerna.json文件里面把version 内容替换成independent { "version": "independent" } 即可

lerna 基本命令

create

 lerna create xxx 

该命令为创建一个包名为xxx

add

lerna add react --scope=xxx

scope 可以理解为作用域,代表我的react 依赖只安装在xxx 包名下面, 而不是全部都安装,如果需要全部安装的话, 则 lerna add react 即可

list

lerna list

可以查看当前包名有哪些, 在我们发布包的时候可以使用lerna list来查看是否能找到我们的包名

bootstrap

lerna bootstrap

安装依赖,帮我们把依赖安装到根node_modules 同等于 npm install

publish

lerna publish

发布我们的包到npm 包, 如果我们想发布到自己私有的npm 上的话, 只要在package.json 把register 上地址替换即可

link

    lerna link

进行调试, 会把当前的包名以依赖的形式进行本地联调,而不会影响到全局的包, 类型npm link

run

lerna run <script>