【问题标题】:How to share a global.d.ts from several packages in monorepo如何从 monorepo 中的多个包共享 global.d.ts
【发布时间】:2022-06-25 13:51:32
【问题描述】:

我在global.d.ts 文件中有几个数据库查询结果的接口定义。当我使用这些接口将各种项目文件夹移动到一个单一的monorepo中时,我仍然在每个包中使用与以前相同的global.d.ts 的副本,并且它工作正常,除了重复,这在单体仓库。

我在根目录下有一个共享的tsconfig.json 文件,该文件由每个包中的tsconfig.json 扩展。

如何将 global.d.ts 文件移动到 monorepo 的根目录,并让所有包都使用它而不将其导入每个源文件?

我尝试更改每个包的 tsconfig:

"include": ["./src/**/*"],
// into
"include": ["./src/**/*", "../../types/**/*"],

我尝试在根 tsconfig 中添加 typeRoots

"typeRoots": ["./node_modules/@types", ".types"]

一切都无济于事。

总结:我只想将每个包中当前工作的global.d.ts 文件的两个相同副本移动到一个公共位置的单个文件中,并让 tsc 找到它,就像每个包中都有一个副本一样包。

谢谢

【问题讨论】:

  • 你找到解决办法了吗?

标签: typescript monorepo


【解决方案1】:

回答自己。

我找到的最佳解决方案是使用reference

/// <reference path="../../types/global.d.ts" />
/// <reference path="../../types/api.d.ts" />

在此示例中,types 文件夹位于 mono-repo 的根目录,它不是一个包,但它可能是一个包,这并不重要,您的选择。我已将我原本打算拥有的单个 global.d.ts 拆分为几个更具体的。引用需要在每个包中的任何文件中只出现一次。我选择将它放在根目录 index.tsindex.tsx 文件中,这似乎是最合适的位置。

我喜欢这个解决方案比我最初寻找的解决方案更好,因为它并不麻烦,因为引用必须只进行一次,而不是在每个文件中,它允许我将定义拆分为各种声明文件按需使用,而不是单独使用所有内容。

【讨论】:

    猜你喜欢
    • 2021-11-17
    • 2020-02-01
    • 1970-01-01
    • 2019-07-14
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    相关资源
    最近更新 更多