目前手上有多个项目,这些项目里面共用一套相同 UI、API 的权限控制模块,公共项目和这些项目都在不同的 云效git
仓库 上面,并通过流水线进行打包构建。
为了能够统一管理公共模块,在本地使用了 lerna
工具对包进行管理,但上传到仓库后流水线如何构建?
由于公司代码管理条例规定,所有项目都要放到云效并在流水线构建打包发布,因此有些方案并不适用。
有没有大佬指点这应该如何解决?
或者更好的包管理策略?
当面临多个项目共享公共模块的情况时,一个有效的策略是使用 Lerna 进行包管理和构建。Lerna 是一个 JavaScript 工具,用于管理多个包在一个单一的项目中。
首先,你需要将公共模块作为独立的 Git 仓库来维护,并使用 Lerna 进行包管理。这样,你可以在每个项目中通过 Lerna 安装和更新这些公共包。
然后,你可以在每个项目的 package.json
中指定公共包的版本。这样,每个项目都可以根据其需要使用特定版本的公共包。
在构建过程中,你可以使用 Docker 来创建一个一致的构建环境。无论你的项目在哪里运行,无论使用的是什么操作系统或硬件,Docker 都可以确保你的项目在一个一致的环境中构建。
具体的步骤可能如下:
lerna init
来初始化 Lerna。lerna create
创建一个新的包,或者从现有的 Git 仓库中导入一个包。lerna link
来链接你在公共包仓库中创建的包。lerna publish
来发布新的版本。然后在每个项目中运行 lerna update
来更新到新的版本。这种策略的关键在于,每个项目都指定了公共包的版本,这样就可以确保每个项目都使用一致的公共包版本。此外,Docker 确保了构建环境的一致性,无论项目在哪里运行都不会受到影响。
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
把公共模块发布成私有npm包。这样,所有项目只要下载依赖安装就行