【发布时间】:2019-09-11 04:10:43
【问题描述】:
我正在设计一组微服务。我使用了以下结构,其中每个项目都是自己的存储库。
my-project-logger-
my-project-numbers-service进口:-
my-project-logger类型定义 + 类对象(整个实现) -
my-project-alphabet-service类型定义
-
-
my-project-alphabet-service进口:-
my-project-logger类型定义 + 类对象(整个实现)
-
-
my-project-client进口:-
my-project-logger类型定义 -
my-project-numbers-service类型定义 -
my-project-alphabet-service类型定义
-
然后在我的 package.json 中,我将类型定义不需要的所有依赖项保存到 devDependencies 中,因此在导入包时不会安装它们(仅当从 git 克隆时)。
例如在my-project-logger 的情况下,问题就出现了,我只需要客户端上的类型定义,但我需要服务的整个实现。我不确定如何使存储库具有两种不同的安装模式。一个只安装类型定义,另一个安装整个实现。无法使用 npm(用于发布)也会让事情变得更加困难。
我也尝试过使用 lerna 的 monorepo 方法,但这使得使用 docker 独立部署微服务效率极低,因为您必须在 dockerfile 中手动指定每个本地依赖项(因为我不能使用 npm 网站进行发布)。
我尝试的最后一种方法是创建一个my-project-types 存储库并在其中包含每个存储库的类型,但这很烦人,因为每次更改类型时都必须重新提取每个服务的类型存储库这取决于它。
【问题讨论】:
标签: git typescript npm