大项目管理

  • 随着前端的不断发展,代码变得越来越繁杂,为方便管理,减小维护成本,也为了方便复用,大代码库被地划分为更小粒度的代码。那这些小代码库应该如何管理?大致有两类解决方案:

    • multi reop 即一个包一个库
      • 每个包都有独立的库管理,开发自由度高
      • 调用时,要像第三方包一样被调用;
      • 修改时,源代码要到被调用的库修改,然后由调用者修改调用方式
    • monorepo 即一个仓库中管理所有包(小代码库)
      • 所有代码由一个库管理,统一配置和组织方式
      • 调用时,同目录调用
      • 修改时,源代码的修改,改的作用通过调用的库显示出来,所以需要修改调用代码

lerna

  • monorepo 方式的一个工具库 lerna

  • 安装

    npm i lerna -g

  • 初始化项目

    lerna init

    执行命令后会在当前目录下出现

    • 一个lerna.json文件,配置 lerna:

      1
      2
      3
      4
      5
      6
      {
      "package":[
      "packages/*"
      ],
      "version":"0.0.0"
      }
    • 一个标志为 npm 管理方式的package.json

    • 一个命名为 packages 空目录,在这里存放需要管理的包

  • 处理各个包之间的依赖

    lerna bootstrap

    • 执行后自动下载和链接好各个包(通过查看各个包的 package.json 的 dependencies 属性,分辨是否是内置的包,内置的用 npm link 链接,外部的第三方用 npm i)
  • git commit 和发布包:

    lerna publish

    • 执行后自动打 tag,更新各个包的版本(默认情况下,无论有无更改都会改版本号)
    • 因为是绑定了 git,所以一定要有远程 git 仓库才能成功

参考

精读《Monorepo 的优势》

lerna

npm 官宣:未来将支持 monorepo 特性,带来源码管理新姿势!

REPO STYLE WARS: MONO VS MULTI——>中文翻译

最后更新: 2021年07月16日 00:11

原始链接: https://idkhts.github.io/2021/01/19/monorepo%E5%92%8Clerna/