Lerna logo

用于 拥有多个packages 的 js项目 的工具.

关注 Lerna 的 Twitter

关于

大型的代码库 拆分为 独立的版本包 对 代码共享非常有用,然而,要对这么 多的存储库进行更改是如此凌乱且难以追踪,还有还有 跨存储库测试 也变得非常复杂。

为了解决这样 (那样) 的问题, 一些项目组会将他们的基础代码库分组成多个包库. 像 Babel, React, Angular, Ember, Meteor, Jest 和 其他项目组开发他们的包都是在一个repo库.

Lerna 搭配 git 与 npm 优化了管理多个包库的工作流程.


入门

让我们用 npm 全局下载开始:

Lerna 2.x是推荐的版本.

npm install --global lerna

接下来我们将创建一个新的git存储库:

git init lerna-repo && cd lerna-repo

现在让我们把它变成一个Lerna项目:

lerna init

您的存储库现在应该如下所示:

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

命令

以下是每个命令的简要介绍。 请浏览 README 获取更多信息.

lerna init

创建一个新的lerna repo 或 将现有的repo升级到当前版本的Lerna。

Options

--independent/-i – 使用独立版本控制模式.

lerna bootstrap

在当前的Lerna仓库中引导包。安装所有依赖项并链接任何跨库依赖项

此命令至关重要,因为它允许您 require()一些包名称来使用,就好像包已经存在并在您的 node_modules 文件夹.

lerna import <pathToRepo>

导入 <pathToRepo> 这个本地路径的提交记录到packages/<directory-name>.

lerna publish

创建软件包的新版本用以更新. 提示新版本并更新 git和npm 上的所有软件包。

选项

--npm-tag [tagname] — 发布 tagname版本 到npm (默认是最新的).

--canary/-c – 创建 canary 版本.

--skip-git – 不要运行任何git命令

--force-publish [packages] — 强制发布指定的包(逗号分隔)或所有包使用 * (跳过git diff检查更改的包).

lerna changed

检查自上次发布以来哪些软件包已更改.

lerna diff [package?]

自上次发布以来,所有包或单个包的变化.

lerna run [script]

运行一个npm script 在每个包含这个脚本的包.

lerna ls

列出当前Lerna项目中的所有公共包.

谁在用 lerna ?