用yarn和ts 3.0管理打字稿项目monorepo

Ilj*_*lja 11 typescript react-native yarnpkg

我已经有了一段时间的反应原生monorepo结构了一段时间

/app
  package.json
/firebase
  /functions
    tsconfig.json
    package.json
/types
  package.json
/ios
/android
tsconfig.json
Run Code Online (Sandbox Code Playgroud)

iosandroid文件夹是相应的本机代码,所以我们并不真正关心它们,只是包含在这里为完整的例子.

实际项目是:

app - 应用程序逻辑

firebase/functions - 后端逻辑

types - 模型和商店的接口

每个都有package.json像name属性的文件@MyCompany/app.这是为纱线工作区完成的,并允许我轻松地在项目之间导入东西.

到目前为止它很好,现在打字稿3出来了,我想看看是否有办法清理它?

目前我有2个tsconfig文件,我相信我可以以某种方式将它们合并为一个?

另外,有没有办法让我定义多个.d.ts文件而不是我的typesfilder,并以某种方式使我的模型和存储界面在整个项目中可用?

如果我使用打字稿3,我是否需要保持纱线工作空间?这些项目不会在任何地方发布,而是部署到不同的目标

the*_*ope 1

目前我有 2 个 tsconfig 文件,我相信我可以以某种方式将它们合并为一个?

我相信您无法从单个tsconfig文件中指定单独的编译目标,但是如果您想减少文件之间的重复量,您可以在tsconfig.json项目的根目录中定义一个包含通用配置的主版本,并让您的项目特定的tsconfig.json版本从大师

有没有办法让我定义多个 .d.ts 文件而不是我的类型文件夹,并使我的模型和存储接口以某种方式跨项目全局可用?

是的,您当然可以.d.ts在任何地方定义任意数量的文件,并tsconfig.json使用三斜杠指令将它们包含在每个文件中或临时文件中:

  • 如果您想将它们临时包含在每个文件中,则需要使用三斜杠引用指令并将.d.ts文件路径作为参数传递。
  • 更简单的方法是通过 使编译器可以使用它们tsconfig。如果您使用"files""include"数组来指定编译器输入,只需将相关.d.ts文件添加到列表中即可。如果您仅使用"exclude"数组,请确保不排除您的.d.ts文件。

您可能希望保留纱线工作区,因为 TS 3.0 没有可以替代工作区的工具。

希望这可以帮助。