美文网首页
lerna 多包管理

lerna 多包管理

作者: small_zeo | 来源:发表于2022-01-24 16:24 被阅读0次

    Lerna

    Lerna 是一个管理工具,用于管理包含多个软件包(package)的 JavaScript 项目。
    将大型代码库拆分为独立的独立版本包对于代码共享非常有用。 然而,在许多存储库中进行更改是麻烦和难以跟踪的事情。为了解决这些(和许多其他)问题,一些项目将它们的代码库组织成多包存储库。 像 Babel、React、Angular、Ember、Meteor、Jest 等等。

    用法

    • 推荐使用 Lerna 2.x 版本
    npm install --global lerna
    
    • 创建一个新的 git 代码仓库
    git init lerna-repo && cd lerna-repo
    
    • 将上述仓库转变为一个 Lerna 仓库:
      lerna init
    • 你的代码仓库目前应该是如下结构:

    命令

    lerna init

    常见一个新的 lerna 仓库(repo)或将现有的仓库升级为适配当前 版本的 Lerna
    参数: --independent/-i – 使用独立的 版本控制模式。

    lerna bootstrap

    在当前 Lerna 仓库中执行引导流程(bootstrap)。安装所有依赖项并链接任何交叉依赖。
    此命令至关重要,因为它让你可以 在 require() 中直接通过软件包的名称进行加载,就好像此软件包已经存在于 你的 node_modules 目录下一样。

    lerna import <pathToRepo>

    将本地路径 <pathToRepo> 中的软件包导入(import) packages/<directory-name> 中并提交 commit。

    lerna publish

    为已经更新过的软件包创建一个新版本。提示输入新版本号并更新 git 和 npm 上的所有软件包。
    参数:
    --npm-tag [tagname] — 使用给定的 npm dist-tag (默认为 latest)发布到 npm。
    --canary/-c – 创建一个 canary 版本。
    --skip-git – 不要运行任何 git 命令。
    --force-publish [packages] — 强制发布 指定的一个或多个软件包(以逗号分隔)或使用 * 表示所有软件包(对于修改过的软件包跳过 git diff 检查)。

    lerna changed

    检查自上次发布以来哪些软件包被修改过。

    lerna diff [package?]

    列出所有或某个软件包自上次发布以来的修改情况。

    lerna run [script]

    在每一个包含 [script] 脚本的软件包中运行此 npm 脚本

    lerna ls

    列出当前 Lerna 仓库中的所有公共软件包(public packages)。

    lerna-repo/
      packages/
      package.json
      lerna.json
    

    lerna.json解析

    {
      "version": "1.1.3",
      "npmClient": "npm",
      "command": {
        "publish": {
          "ignoreChanges": ["ignored-file", "*.md"],
          "message": "chore(release): publish",
          "registry": "https://npm.pkg.github.com"
        },
        "bootstrap": {
          "ignore": "component-*",
          "npmClientArgs": ["--no-package-lock"]
        }
      },
      "packages": ["packages/*"]
    }
    
    • version: 当前仓库版本
    • npmClient: 指定运行的命令,使用yarn则改成"yarn";默认"npm"
    • command.publish.ignoreChanges: 全局的数组,lerna更改/发布则不包含这个数组;使用此选项可以防止不必要地发布新版本以进行更改,例如修复README.md错误。
    • command.publish.message: 执行发布版本更新时的自定义提交消息。
    • command.publish.registry: 使用它设置自定义源来代替npmjs,必须已经过身份验证。
    • packages: 全局的数组,作为使用package的地方。
    • command.bootstrap.ignore: 当执行lerna bootstrap时忽略数组里的命令
    • command.bootstrap.npmClientArgs: 执行lerna bootstrap时,数组里的字符将作为参数直接传递给npm install

    参考链接

    github-lerna
    lerna官网

    相关文章

      网友评论

          本文标题:lerna 多包管理

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