美文网首页
2021-06-26 lerna管理项目

2021-06-26 lerna管理项目

作者: FConfidence | 来源:发表于2021-06-26 11:45 被阅读0次

    monorepo

    1. 管理代码的一个方式, 指的是在一个仓库里管理多个模块/包 package

    2. monorepo最主要的好处就是统一的工作流和代码共享

    3. Lerna是管理多个npm模块的工具 优化维护多包的工作流, 解决多个包之间相互依赖, 且发布需要手动维护多个包的问题

    4. packages = (packageA + packageB + packageC) 一个仓库下有多个包

    5. MultiRepo多仓管理方式

      • 优点:
        • 各个模块管理自由度比较高, 可自行选择构建工具, 依赖管理, 单元测试等配套设施
        • 各模块仓库体积一般不会太大
      • 缺点:
        • 仓库分散不太好找, 很多的时候, 分支管理混乱
        • 版本更新频繁, 如果公共模块发生了变化的时候, 需要对所有的模块进行依赖的更新
        • CHANGELOG梳理比较折腾, 无法很好地关联各个模块的变动联系, 基本靠口相传
    6. MonoRepo的方法

      • 缺点:
        • 统一构建工具, 对构建工具提出了更高的要求, 要构建各种相关的模块
        • 仓库体积变大
      • 优点:
        • 一个仓库维护多个模块, 不用到处寻找仓库
        • 方便版本管理和依赖管理, 模块之间的引用, 调试都比较方便, 配合相应工具, 都可以使用一个命令搞定
        • 方便统一生成CHANGELOG 配合提取规范, 可以在发布的时候自动生成
    7. 使用mongoRepo

      • npm install lerna -g

      • lerna init

      • package.json

        • private: true 表示是一个私有的项目, 不会发布到npm上
        • workspaces 表示是一个yarn workspace的项目, 允许我们使用monoRepo的形式来管理项目
      • 在安装node_modules的时候, 不会安装到每一个子项目的node_modules里面, 而是直接安装到根路径下面, 这样每一个子项目都可以读取到根项目里面的node_modules

      • 整个项目只有根路径下面有一份yarn.lock文件, 子项目会被link到node_modules里面, 这样就允许我们可以直接使用import导入对应的项目

      • yarn.lock文件是自动生成的, 完全由yarn来处理, 锁定安装的每一个依赖的版本, 这样可以确保不会获得不良的依赖

      • lerna创建子项目

        • lerna create create-react-app3
        • lerna create react-script3
        • lerna create cra-template3
        // cra-template3.js
        const reactScripts = require("react-scripts2");
        
        function craTemplate2() {
            console.log(reactScripts());
            console.log("cra-template-2");
        }
        
        craTemplate2();
        
        module.exports = craTemplate2;
        
        // react-scripts2.js
        function reactScripts2() {
            // console.log('reactScripts2');
            return "reactScripts2";
        }
        module.exports = reactScripts2;
        
    8. yarn管理项目

      • yarn workspaces info查看工作空间
      • yarn add chalk cross-spawn fs-extra@8.1.0 --ignore-workspace-root-check 忽略工作空间根检查
      • 给公共空间安装依赖: yarn workspace create-react-app2 add commander

    相关文章

      网友评论

          本文标题:2021-06-26 lerna管理项目

          本文链接:https://www.haomeiwen.com/subject/cnfzyltx.html