**类型脚本版本:**3.2.4、3.3.0-rc
**检索词:**TS 5055,覆盖输入文件
代码
不幸的是,迄今为止,我还无法在最小的情况下重现确切的问题;下面是我试图重现的代码。我只在一个更复杂的,专有的源代码树中看到过它(但经常看到)。到目前为止,我所能做的就是显示输出文件出现在它们不应该出现的地方。
问题在于:当我有一个带有子引用的父项目时,其中一些子引用是相互依赖的,* 一个 * 包的输出文件成为 * 另一个 * 包的输入文件,并且这两个文件都被tsc
视为输入文件,即使它们在拥有它们的包中被列为输出文件。
test$ tree
.
├── build
│ └── packages
├── node_modules
│ └── @scope
│ ├── child1 -> ../../packages/child1
│ └── child2 -> ../../packages/child2
├── package.json
├── packages
│ ├── child1
│ │ ├── build
│ │ │ ├── index.d.ts
│ │ │ └── index.js
│ │ ├── package.json
│ │ ├── src
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ └── child2
│ ├── build
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── something.d.ts
│ │ └── something.js
│ ├── package.json
│ ├── src
│ │ ├── index.ts
│ │ └── something.ts
│ └── tsconfig.json
├── tsconfig.json
(https://github.com/haggholm/ts5055)(英文)
因为child1
依赖于child2
,反之亦然,所以如果从父目录运行tsc --listFiles
,则会列出输出文件。因为它们被视为输入文件,所以tsc
拒绝覆盖它们。
也许tsc --build
应该更严格地根据每个项目来确定输入/输出文件?
预期行为:
更新一个包中的文件应该遵守该包的tsconfig
的输入/输出规则。tsc --listFiles
不应该在packages/*/build
下列出任何内容,因为它们被各自的packages/*/tsconfig.json
排除在外。
实际行为:
child1
的输出文件被视为输入文件,因为它们由child2
导入。输出文件显示在tsc --listFiles
中。
**相关问题:**有许多TS 5055相关问题,但我没有发现任何与项目引用/tsc --build
特别相关的问题。
4条答案
按热度按时间xzv2uavs1#
我还没有自己的最小复制-但我注意到,这似乎停止发生后,一个
tsc --build --clean
(显然不是理想的,因为它有效地禁用增量建设)。nhaq1z212#
我不清楚这里的bug应该是什么--您只是缺少了
exclude
条目吗?tsc
包含哪些文件的规则几乎是一成不变的; TS不试图猜测应该存在哪些其他exclude
是有意的(如果您 * 确实 * 希望将它们包含在构建中,该怎么办?)irtuqstp3#
FWIW我刚刚点击了这个B/c文件,不小心将一个导入添加到了
build
目录,即:而不是:
这使得
other-project
的构建目录被推到输入中(即,它出现在--listFiles
中),尽管它是exclude
d。piah890a4#
我也有同样的问题,完全不明白这应该如何运作:
references
迫使我使用声明文件,每次增量运行时,我都会得到一个带有... because it would overwrite input file.
的TS5055这整件事(项目参考)几乎是可行的,没有任何意义,或者我错过了什么。