如何在github上构建typescript微服务存储库

如何在github上构建typescript微服务存储库,git,typescript,npm,Git,Typescript,Npm,我正在设计一系列的微服务。我使用了以下结构,其中每个项目都是自己的存储库 我的项目记录器 我的项目编号服务导入: 我的项目记录器类型定义+类对象(整个实现) 我的项目字母表服务类型定义 我的项目字母表服务导入: 我的项目记录器类型定义+类对象(整个实现) 我的项目客户端导入: 我的项目记录器类型定义 我的项目编号服务类型定义 我的项目字母表服务类型定义 然后在my package.json中,我将类型定义不需要的所有依赖项保存到devdependency中,以便在导入包时(仅当从

我正在设计一系列的微服务。我使用了以下结构,其中每个项目都是自己的存储库

  • 我的项目记录器
  • 我的项目编号服务
    导入:
    • 我的项目记录器
      类型定义+类对象(整个实现)
    • 我的项目字母表服务
      类型定义
  • 我的项目字母表服务
    导入:
    • 我的项目记录器
      类型定义+类对象(整个实现)
  • 我的项目客户端
    导入:
    • 我的项目记录器
      类型定义
    • 我的项目编号服务
      类型定义
    • 我的项目字母表服务
      类型定义
然后在my package.json中,我将类型定义不需要的所有依赖项保存到devdependency中,以便在导入包时(仅当从git克隆时)不会安装这些依赖项

例如,在
myprojectlogger
中,我只需要客户机上的类型定义,但需要服务的整个实现时,就会出现问题。我不知道如何使存储库具有两种不同的安装模式。一个只安装类型定义,另一个安装整个实现。不能使用npm(用于出版)也会使事情变得更加困难

我也尝试过对lerna使用monorepo方法,但这使得使用docker独立部署微服务的效率极低,因为您必须手动指定dockerfile中的每个本地依赖项(因为我无法使用npm网站进行发布)


我尝试的最后一种方法是创建一个
myprojecttypes
存储库,并将每个存储库的类型都放在其中,但这很烦人,因为每次更改类型时,都必须为依赖它的每个服务重新提取类型存储库。

我认为解决这一问题的正确方法是发布多个包。您可以仅使用类型定义发布单独的包