【发布时间】:2020-11-02 07:09:38
【问题描述】:
我的目录结构如下:
.
├── tsconfig.json ("module": "CommonJS")
└── foo/
├── node-file.ts
└── bar/
├── browser-file.ts
└── tsconfig.json ("module": "esnext")
根tsconfig.json 将module 设置为CommonJS,因为我希望我的大部分文件都为Node 编译。但在bar 内部,我希望文件编译为JavaScript 模块,所以我将module 设置为esnext。
现在,当我从根目录运行 tsc 时,我希望 node-file.ts 编译为 CommonJS 模块,browser-file.ts 编译为 JavaScript 模块。但这不是我得到的。看来tsc完全无视foo/bar/tsconfig.json,只捡根tsconfig.json。
(我在开发时也使用tsc --watch,所以我试图避免运行两个不同的tsc 进程来编译两个不同的目标。在我看来,运行一个带有嵌套@ 的tsc 987654339@ 文件应该会给我想要的结果。)
有人知道我做错了什么吗?
【问题讨论】:
-
TypeScript 只使用一个
tsconfig.json并且不会自动将子目录的tsconfig.json用于那里的文件。你可能想看看project references -
我不知道项目引用是否允许我为每个目录设置不同的模块类型,我会进一步研究它。但是感谢您纠正了我对编译器如何工作的错误假设。随意发布这个作为答案,我会接受它。
标签: typescript