使用 yarn 和 ts 3.0 管理 typescript 项目 monorepo
Posted
技术标签:
【中文标题】使用 yarn 和 ts 3.0 管理 typescript 项目 monorepo【英文标题】:Managing typescript project monorepo with yarn and ts 3.0 【发布时间】:2019-01-16 04:34:56 【问题描述】:我已经关注 react native monorepo 结构一段时间了
/app
package.json
/firebase
/functions
tsconfig.json
package.json
/types
package.json
/ios
/android
tsconfig.json
ios
和 android
文件夹是各自的本地代码,所以我们并不真正关心它们,这里仅包含用于不完整的示例。
实际项目有:
app
- 应用逻辑
firebase/functions
- 后端逻辑
types
- 模型和商店的接口
每个都有package.json
文件,其名称属性类似于@MyCompany/app
。这是为yarn workspaces 完成的,让我可以轻松地在项目之间导入内容。
到目前为止还不错,现在 typescript 3 出来了,我想看看是否有办法清理它?
目前我有 2 个tsconfig
文件,我相信我可以以某种方式将它们合并为一个?
另外,有没有办法让我定义多个 .d.ts
文件而不是我的 types
文件,并使我的模型和存储接口以某种方式在项目中全局可用?
如果我使用 typescript 3,是否需要保留 yarn 工作区?这些项目没有在任何地方发布,而是部署到不同的目标
【问题讨论】:
【参考方案1】:目前我有 2 个 tsconfig 文件,我相信我可以以某种方式将它们合并为一个?
我相信您不能从单个 tsconfig
文件中指定单独的编译目标,但如果您想降低文件间的重复次数,您可以在项目的根目录中定义一个包含通用配置的主 tsconfig.json
并让您的项目特定tsconfig.json
s extend from the master。
有没有办法让我定义多个 .d.ts 文件而不是我的类型文件,并使我的模型和存储接口以某种方式在项目中全局可用?
是的,您当然可以在任意位置定义任意数量的 .d.ts
文件,并将它们包含在 tsconfig.json
中或使用三斜杠指令临时包含在每个文件中:
.d.ts
文件路径作为参数传递。
更简单的方法是通过tsconfig
将它们提供给编译器。如果您使用"files"
或"include"
数组来指定编译器输入,只需将相关的.d.ts
文件添加到列表中。如果您仅使用 "exclude"
数组,请确保不要排除您的 .d.ts
文件。
您可能希望保留 yarn 工作区,因为 TS 3.0 没有可以替代工作区的工具。
希望这会有所帮助。
【讨论】:
以上是关于使用 yarn 和 ts 3.0 管理 typescript 项目 monorepo的主要内容,如果未能解决你的问题,请参考以下文章
带有 Yarn、TypeScript 和 React Native 的 Lerna:找不到模块“@project/common”或其对应的类型声明。ts(2307)