lerna的基本使用

263 阅读2分钟

lerna是一个package管理工具, 用于管理包含多个package的javascript项目.

本文通过demo讲解lerna如何管理多个package, 最终把这几个package推送到npm仓库.

实现通过npm全局安装后, 可以在命令行使用自定义命令的功能.

一、安装

可以把使用 npm install -g lerna 把lerna全局安装到本地, 也可以使用 npx lerna命令, 直接使用lerna

image.png

二、初始化lerna项目

使用 lerna init 命令初始化一个项目

image.png

如上图所示, lerna 默认会使用 npm workspaces 特性来管理 package. 我们可以在 packages 目录下创建子项目. 我们将会创建 a b cli 三个子项目, 项目之间存在引用关系, 我们一起看看用lerna如何对这三个项目进行管理吧.

三、开发各个package

  1. 使用 lerna create 命令创建 a 项目

image.png

  • 我们修改项目 a 的name, 加上我们申请的 npm organization (organization大家可以在自己的npm下自行申请). 加organization前缀是为了把我们的子项目推送到这个组织下. 如下图, 我的 organization 是 lerna-basic-usage.

image.png

  • 我们使用es module风格来书写js代码, 所以我们把 a.js 改成 a.mjs. 同时, 要同步修改 package.json 的 main

image.png

这是使用es module规范不是必须的, 你也可以使用commonjs规范
  • 在 lib/a.mjs 书写我们的业务代码. 这里我们导出一个函数, 这个函数将会被其他项目使用.

image.png

  1. 参考步骤1, 创 b 项目

image.png

  1. 创建 cli 项目

cli 项目将导入 a b 项目, 调用其中方法.
cli 应具备全局安装后, 可以在命令行工具使用 my-demo-cli 命令的功能.

  • 使用 lerna create cli 命令初始化项目, 在 package.json 添加 bin 字段, 我们可以在 bin 字段注册自定义命令. 这里我们注册的自定义命令是 my-demo-cli, my-demo-cli 指向的是 bin/cli.mjs

image.png

  • cli 项目中引用 a b 项目
lerna add @lerna-basic-usage/a ./packages/cli
lerna add @lerna-basic-usage/b ./packages/cli

image.png

  • cd到package/cli, 使用 npm link 命令, 创建 my-demo-cli 软链接

image.png

四、发布

使用 lerna publish 命令把各个项目推送到npm仓库

image.png

五、全局安装

npm i -g @lerna-basic-usage/cli

image.png