zoukankan      html  css  js  c++  java
  • monorepo

    1.什么是monorepo?

    Monorepo 它是一种管理 organisation 代码的方式,在这种方式下会摒弃原先一个 module 一个 repo 的方式,取而代之的是把所有的 modules 都放在一个 repo 内来管理。

    目前诸如 Babel, React, Angular, Ember, Meteor, Jest 等等都采用了 Monorepo 这种方式来进行源码的管理。

    2.git 多仓库管理的缺点

    1. 管理调试困难
    2. 分支管理混乱
    3. 依赖关系复杂
    4. 三方依赖版本可能不一致
    5. 占用总空间大
    6. 不利于团队协作

    每个小点,需要仔细分析其困难

    3.什么是lerna?

    Lerna 就是基于Monorepo 理念的工具实现。使用lerna 管理的目录结构:

    ├── packages
    │      ├─ module-a
    │      │    ├─ src            # 模块 a 的源码
    │      │    └─ package.json   # 自动生成的,仅模块 a 的依赖
    │      └─ module-b
    │           ├─ src            # 模块 b 的源码
    │           └─ package.json   # 自动生成的,仅模块 b 的依赖
    ├── tsconfig.json             # 配置文件,对整个项目生效
    ├── .eslintrc                 # 配置文件,对整个项目生效
    ├── node_modules              # 整个项目只有一个外层 node_modules
    └── package.json              # 包含整个项目所有依赖

    所有全局配置文件只有一个,这样不会导致 IDE 遇到子文件夹中的配置文件,导致全局配置失效或异常。node_modules 也只有一个,既保证了项目依赖的一致性,又避免了依赖被重复安装,节省空间的同时还提高了安装速度。

    兄弟模块之间通过模块 package.json 定义的 name 相互引用,保证模块之间的独立性,但又不需要真正发布或安装这个模块,通过 tsconfig.json 的 paths 与 webpack 的 alias 共同实现虚拟模块路径的效果。

    4.如何用lerna进行项目管理:

    1. npm install —global lerna
    2. git init monorepo-example        cd monorepo-example
    3. Lerna init
    ├──packages
    ├── lerna.json
    └── package.json

           4. cd packages

       5.mkdir monorepo-example-module-a       cd  monorepo-example-module-a       npm init

           6.Mkdir  monorepo-example-module-core     cd monorepo-example-module-core    npm init

    假设module-a 依赖module-core ,然后在根目录执行

      7.cd monorepo-example 

      8. lerna bootstrap  生成如下的目录结构。

    lerna 是业界知名度最高的 Monorepo 管理工具,功能完整.

    5.实践monorepo

    1.提升common dependencies
    2.提升tools 和 build scripts


  • 相关阅读:
    maven的pom.xml文件详细说明
    python 给视频添加马赛克
    cv2.VideoCapture 图像旋转问题
    三分钟理解知识蒸馏
    深度学习、机器学习常见概念及理解(持续更新)
    python用直方图规定化实现图像风格转换
    1分钟理解人体姿态估计与行为识别
    数据清洗要点
    3分钟理解NMS非极大值抑制
    python用pandas遍历csv文件
  • 原文地址:https://www.cnblogs.com/torri/p/11196220.html
Copyright © 2011-2022 走看看