TypeScript 项目参考原因TS5055

doinxwow  于 2022-10-29  发布在  TypeScript
关注(0)|答案(4)|浏览(128)

**类型脚本版本:**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特别相关的问题。

xzv2uavs

xzv2uavs1#

我还没有自己的最小复制-但我注意到,这似乎停止发生后,一个tsc --build --clean(显然不是理想的,因为它有效地禁用增量建设)。

nhaq1z21

nhaq1z212#

我不清楚这里的bug应该是什么--您只是缺少了exclude条目吗?tsc包含哪些文件的规则几乎是一成不变的; TS不试图猜测应该存在哪些其他exclude是有意的(如果您 * 确实 * 希望将它们包含在构建中,该怎么办?)

irtuqstp

irtuqstp3#

FWIW我刚刚点击了这个B/c文件,不小心将一个导入添加到了build目录,即:

import { Foo } from "other-project/build/..."

而不是:

import { Foo } from "other-project"

这使得other-project的构建目录被推到输入中(即,它出现在--listFiles中),尽管它是exclude d。

piah890a

piah890a4#

我也有同样的问题,完全不明白这应该如何运作:references迫使我使用声明文件,每次增量运行时,我都会得到一个带有... because it would overwrite input file.的TS5055
这整件事(项目参考)几乎是可行的,没有任何意义,或者我错过了什么。

相关问题