在由多个TypeScript / node.js服务组成的系统中,每个服务都在自己的repo中,我们有一些由多个服务/项目使用的共享接口定义。有时它们是循环的。例如,服务foo
需要调用实现IBar
接口的对象,而bar
服务需要调用IFoo
。所以问题是如何在回购中共享这些接口定义。
我的理解是,共享TS代码的最佳实践是将实际共享转换后的JS作为NPM包以及.d.ts
文件。但我不确定创建一个循环的NPM包依赖是一个很好的主意。
另一个选择是将共享接口定义提取到一个共享的repo / package,但这有点打破了一个服务=一个repo模型。最终只需更换一项服务就越难,而不必担心意外更换另一项服务。
我还有其他选择吗?