返回

用monorepo和lerna维护大型前端项目

前端

monorepo和lerna简介

monorepo

monorepo是一种管理项目代码的方式,指在一个项目仓库(repo)中管理多个模块/包(package),不同于常见的每个模块建一个repo。monorepo的主要优点是:

  • 集中管理: 所有的代码都在一个仓库中,便于管理和维护。
  • 代码复用: 模块之间可以共享代码,提高代码复用率。
  • 版本控制: 更容易管理和跟踪代码的版本。

lerna

lerna是一个用于管理monorepo的工具,它可以帮助我们:

  • 初始化monorepo: lerna可以帮助我们快速初始化一个monorepo。
  • 添加/删除模块: lerna可以帮助我们轻松地添加或删除模块。
  • 发布模块: lerna可以帮助我们发布模块到npm。

使用monorepo和lerna维护大型前端项目

项目结构

一个典型的monorepo项目结构如下:

|- project-root
|   |- package.json
|   |- lerna.json
|   |- modules
|       |- module1
|       |   |- package.json
|       |   |- src
|       |   |- test
|       |- module2
|       |   |- package.json
|       |   |- src
|       |   |- test
  • project-root是项目的根目录。
  • package.json是项目的根package.json文件。
  • lerna.json是lerna的配置文件。
  • modules是模块目录,里面包含了所有的模块。
  • 每个模块都有自己的package.json文件,用于定义模块的名称、版本、依赖关系等。
  • 每个模块都有自己的srctest目录,用于存放源代码和测试代码。

初始化monorepo

要初始化一个monorepo,我们可以使用lerna的init命令:

lerna init

这将在当前目录创建一个新的monorepo,并生成一个lerna.json文件。

添加/删除模块

要添加一个新的模块,我们可以使用lerna的create命令:

lerna create module-name

这将在modules目录下创建一个新的模块,并生成一个新的package.json文件。

要删除一个模块,我们可以使用lerna的remove命令:

lerna remove module-name

这将从modules目录中删除该模块,并从package.json文件中删除该模块的依赖关系。

发布模块

要发布一个模块,我们可以使用lerna的publish命令:

lerna publish

这将把所有已经修改过的模块发布到npm。

总结

monorepo和lerna是前端工程化中非常流行的工具,它们可以帮助我们管理大型前端项目。monorepo可以帮助我们集中管理代码,提高代码复用率,更容易管理和跟踪代码的版本。lerna可以帮助我们快速初始化monorepo,轻松地添加或删除模块,发布模块。