什么是lerna
lerna是一个
javascript/typescript的👉monorepo tool(官方解释),那么monorepo又是什么呢,我们又该怎么理解呢?其实我们并不需要太过深入的理解它,我们只需要知道,它是一个仓库,这个仓库中存放着不同的项目,并且项目之间还存在着良好的关系,当然,如果你对此感兴趣,想要了解更多内容,你可以点击小手指后面的内容进行查看
安装lena
// 我在这里全局安装了,方便使用
npm install -g lerna
// 安装完成后我们可以创建一个文件夹(我这这里创建的是lerna-start文件夹)
// 运行命令初始化一个项目
npx lerna@latest init
之后我们将看到在我们的文件夹下面出现了以下内容
- 接下来我们在packages下创建
api文件夹,使用npm初始化一个package.json,并添加依赖如下
然后在api文件夹下创建index.js文件,内容如下
const lodash = require("lodash");
const contact = lodash.concat;
module.exports = contact;
该文件导出一个合并数组的方法
- 在packages目录下创建
testApi文件夹,初始化packages.json文件,并添加type:module字段,目的是可以在nodejs中识别esmodule语法,内容如下
然后和上面的步骤类似,在testApi文件夹中创建index.js文件,内容如下
注意:在lerna中,如果我们想要使用
api文件中导出的方法(在这里我们可以把api文件当做一个npm包),我们需要做的是在testApi文件中下的package.json中添加依赖,如下
好了,到这里我们的准备工作就完成了,接下来要介绍
lerna的两个命令,这两条命令可以使我们的lerna项目正常的启动
- 第一个命令
lerna bootstrap
该命令的作用是:将本地软件包连接在一起并安装根目录以及packages下所有文件夹下的依赖项
为了方便使用在项目根目录的package.json文件中添加一个scripts命令,并在终端中执行安装相关依赖
"scripts": {
"prep": "lerna bootstrap"
}
执行完成命令后当我们打开testApi下index.js文件,,当鼠标悬浮在api上后按住ctrl+鼠标左键会发现可以跳转到api文件夹下的index.js文件,动态展示如下
这样我们就可以在
testApi文件下的任意文件导入使用api文件夹导出的合并数组方法了,就像引用一个npm包一样
到这里看似已经结束了,我们完全可以进入到
testApi文件夹中然后在终端中运行node index.js便可以发现可以执行并打印出合并的数据,如下
那么lerna有没有提供方法,可以让我们不用进入testApi文件夹执行命令也能执行index.js文件呢?答案当然是有的,那就是接下来我们提到的第二个命令:
- 第一个命令
lerna run
该命令的作用是:在包含该脚本的每个包中运行一个npm脚本。例如我们运行lerna run dev命令,那么lerna会查找packages下所有文件夹中的package.json文件,如果在该文件中存在dev的scripts命令就会执行
根据上述描述,我们在根目录的package.json文件中添加如下命令
"scripts": {
...
"start": "lerna run dev"
}
然后在testApi文件夹下的package.json文件中添加如下内容
"scripts": {
...
"dev": "node index.js"
},
然后在项目根目录运行npm run start命令,会发现终端也可以打印出合并后的数组
动态图看一遍
到这里lerna的基本使用就结束了,如果想要了解更多的lerna命令,可以自己去官网查看哦
最后附上代码吧:gitee.com/fanbingtao/…