lerna入门级使用教程

243 阅读3分钟

什么是lerna

lerna是一个javascript/typescript的👉monorepo tool(官方解释),那么monorepo又是什么呢,我们又该怎么理解呢?其实我们并不需要太过深入的理解它,我们只需要知道,它是一个仓库,这个仓库中存放着不同的项目,并且项目之间还存在着良好的关系,当然,如果你对此感兴趣,想要了解更多内容,你可以点击小手指后面的内容进行查看

安装lena

// 我在这里全局安装了,方便使用
npm install -g lerna

// 安装完成后我们可以创建一个文件夹(我这这里创建的是lerna-start文件夹)
// 运行命令初始化一个项目
npx lerna@latest init

之后我们将看到在我们的文件夹下面出现了以下内容

image.png

  • 接下来我们在packages下创建api文件夹,使用npm初始化一个package.json,并添加依赖如下

image.png

然后在api文件夹下创建index.js文件,内容如下

const lodash = require("lodash");
const contact = lodash.concat;

module.exports = contact;

该文件导出一个合并数组的方法

  • 在packages目录下创建testApi文件夹,初始化packages.json文件,并添加type:module字段,目的是可以在nodejs中识别esmodule语法,内容如下

image.png

然后和上面的步骤类似,在testApi文件夹中创建index.js文件,内容如下

image.png

注意:在lerna中,如果我们想要使用api文件中导出的方法(在这里我们可以把api文件当做一个npm包),我们需要做的是在testApi文件中下的package.json中添加依赖,如下

image.png

好了,到这里我们的准备工作就完成了,接下来要介绍lerna的两个命令,这两条命令可以使我们的lerna项目正常的启动

  1. 第一个命令 lerna bootstrap

该命令的作用是:将本地软件包连接在一起并安装根目录以及packages下所有文件夹下的依赖项

为了方便使用在项目根目录的package.json文件中添加一个scripts命令,并在终端中执行安装相关依赖

  "scripts": {
    "prep": "lerna bootstrap"
  }

执行完成命令后当我们打开testApiindex.js文件,,当鼠标悬浮在api上后按住ctrl+鼠标左键会发现可以跳转到api文件夹下的index.js文件,动态展示如下

lodash.gif 这样我们就可以在testApi文件下的任意文件导入使用api文件夹导出的合并数组方法了,就像引用一个npm包一样

到这里看似已经结束了,我们完全可以进入到testApi文件夹中然后在终端中运行node index.js便可以发现可以执行并打印出合并的数据,如下

image.png

那么lerna有没有提供方法,可以让我们不用进入testApi文件夹执行命令也能执行index.js文件呢?答案当然是有的,那就是接下来我们提到的第二个命令:

  1. 第一个命令 lerna run

该命令的作用是:在包含该脚本的每个包中运行一个npm脚本。例如我们运行lerna run dev命令,那么lerna会查找packages下所有文件夹中的package.json文件,如果在该文件中存在devscripts命令就会执行

根据上述描述,我们在根目录的package.json文件中添加如下命令

  "scripts": {
   ...
    "start": "lerna run dev"
  }

然后在testApi文件夹下的package.json文件中添加如下内容

  "scripts": {
    ...
    "dev": "node index.js"
  },

然后在项目根目录运行npm run start命令,会发现终端也可以打印出合并后的数组

image.png

动态图看一遍

lodash1.gif

到这里lerna的基本使用就结束了,如果想要了解更多的lerna命令,可以自己去官网查看哦

最后附上代码吧:gitee.com/fanbingtao/…