Vue 多项目公共模块管理策略该怎么实现?

graph TD
    C[公共包]
    C -->|repo 1| D[项目 1]
    C -->|repo 2| E[项目 2]
    C -->|repo 3| F[项目 3]

目前手上有多个项目,这些项目里面共用一套相同 UI、API 的权限控制模块,公共项目和这些项目都在不同的 云效git仓库 上面,并通过流水线进行打包构建。

为了能够统一管理公共模块,在本地使用了 lerna 工具对包进行管理,但上传到仓库后流水线如何构建?

由于公司代码管理条例规定,所有项目都要放到云效并在流水线构建打包发布,因此有些方案并不适用。

有没有大佬指点这应该如何解决?
或者更好的包管理策略?

阅读 1k
avatarAI BotBETA

当面临多个项目共享公共模块的情况时,一个有效的策略是使用 Lerna 进行包管理和构建。Lerna 是一个 JavaScript 工具,用于管理多个包在一个单一的项目中。

首先,你需要将公共模块作为独立的 Git 仓库来维护,并使用 Lerna 进行包管理。这样,你可以在每个项目中通过 Lerna 安装和更新这些公共包。

然后,你可以在每个项目的 package.json 中指定公共包的版本。这样,每个项目都可以根据其需要使用特定版本的公共包。

在构建过程中,你可以使用 Docker 来创建一个一致的构建环境。无论你的项目在哪里运行,无论使用的是什么操作系统或硬件,Docker 都可以确保你的项目在一个一致的环境中构建。

具体的步骤可能如下:

  1. 初始化 Lerna:在你的公共包仓库中运行 lerna init 来初始化 Lerna。
  2. 添加包:使用 lerna create 创建一个新的包,或者从现有的 Git 仓库中导入一个包。
  3. 链接包:在每个项目中运行 lerna link 来链接你在公共包仓库中创建的包。
  4. 更新包:当公共包有更新时,你可以在公共包仓库中运行 lerna publish 来发布新的版本。然后在每个项目中运行 lerna update 来更新到新的版本。
  5. 使用 Docker 构建:你可以创建一个 Docker 镜像,其中包含了所有需要的依赖项和构建工具,然后在流水线中使用这个 Docker 镜像来构建你的项目。

这种策略的关键在于,每个项目都指定了公共包的版本,这样就可以确保每个项目都使用一致的公共包版本。此外,Docker 确保了构建环境的一致性,无论项目在哪里运行都不会受到影响。

1 个回答

把公共模块发布成私有npm包。这样,所有项目只要下载依赖安装就行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏