美文网首页
lerna + workspaces使用手册

lerna + workspaces使用手册

作者: 说叁两事 | 来源:发表于2021-01-25 00:46 被阅读0次

    lerna项目管理方式

    固定模式

    默认的模式

    版本号使用lerna.json文件中的version属性。

    执行lerna publish时,如果代码有更新,会自动更新此版本号的值。即:所有的包公用一个版本号

    使用方式:lerna init

    独立模式

    允许维护人员独立的增加修改每个包的版本,每次发布,所有更改的包都会提示输入指定版本号。

    使用方式:lerna init --independent 或 修改lerna.json中的version值为independent,可将固定模式改为独立模式运行。

    初始化项目

    lerna提供一种集中管理package的目录模式,提供了一套自动化管理程序

    git init lerna-demo & cd $_

    npm i -g lerna

    lerna init

    // 初始化后目录结构
    |—— packages // 空目录
    |—— lerna.json
    |—— package.json
    

    配置文件lerna.json

    {
      "npmClient": "yarn", // 执行命令所用的客户端,默认为npm —— 配置后会强制使用最佳实践:能用yarn的用yarn——如lerna bootstap --hoist不再可用
      "command": { // 命令相关配置
        "publish": { // 发布时配置
           "allowBranch": "master", // 只在master分支执行publish
          "conventionalCommits": true, // 生成changelog文件
          "exact": true, // 准确的依赖项
          "ignoreChanges": ["ignored-file", "*.md"], // 发布时忽略的文件
          "message": "chore(release): publish" // 发布时的自定义提示消息
        },
        "bootstrap": { // 安装依赖配置
          "ignore": "component-*", // 忽略项
          "npmClientArgs": ["--no-package-lock"], // 执行 lerna bootstrap命令时传的参数
          "hoist": true
        },
        "version": {
          "conventionalCommits": true //开启日志:自动生成changLog.md
        }
      },
      "packages": [ // 指定存放包的位置
        "packages/*"
      ],
      "version": "0.0.0" // 当前版本号
    }
    

    启用workspaces环境

    手动修改根目录下package.json

    {
      "name": "root",
      "private": true,
      "workspaces": ["packages/*"],
      "devDependencies": {
        "lerna": "^3.22.1"
      }
    }
    

    创建模块

    lerna create @demo/cli

    lerna create @demo/cli2

    yarn workspaces info // 查看工作区

    安装/删除依赖

    • yarn workspace packageB add packageA // 给某个package安装依赖
    • yarn workspace package-b add package-a@0.0.0larna add package-a --scope=package-b // 将packageA作为packageB的依赖进行安装

    // ^ == yarn workspace安装本地包,第一次必须加上lerna.json中的版本号(后续一定不要再加版本号),否则,会从 npm.org远程检索安装

    • yarn add -W -D typescript // 在root下安装公用依赖typescript

    lerna发布流程

    日志规范

    commitizen是用来格式化git commit message的工具,它提供了一种问询式的方式去获取所需的提交信息。

    cz-lerna-changelog是专门为Lerna项目量身定制的提交规范,在问询的过程,会有类似影响哪些 package 的选择

    yarn add -D commitizen

    yarn add -D cz-lerna-changelog

    代码风格

    yarn add -D standard lint-staged

    lint-staged中的stagedGit里的概念,表示暂存区,lint-staged表示只检查并矫正暂存区中的文件。一来提高校验效率,二来可以为老的项目带去巨大的方便。

    上传自动生成日志

    lerna version // 上传项目

    // 自动实现以下功能

    • 找出从上一个版本发布以来有过变更的 package

    • 提示开发者确定要发布的版本号

    • 将所有更新过的的 package 中的package.json的version字段更新

    • 将依赖更新过的 package 的 包中的依赖版本号更新

    • 更新 lerna.json 中的 version 字段

    • 提交上述修改,并打一个 tag

    • 推送到 git 仓库

    参考文档

    相关文章

      网友评论

          本文标题:lerna + workspaces使用手册

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