如何获取打字稿将某些文件编译到其他文件夹?

问题描述 投票:0回答:1
src/ A/a.ts B/b.ts build/ tsconfig.ts

i将编译到构建文件夹中,我得到:
build/
   A/a.js
   B/b.js

但我真正想要的是:
build/
  A/
    a.js
    b.js

I尝试使用
typescript引用
,但是在我的情况下,这不起作用,因为B和反之亦然的参考文件中的文件。由于

tsconfig.ts要求rootDir

以某种方式包含所有导入文件,因此需要将其设置为
src/
,并且由于发射文件的文件夹结构是基于此的,因此我找不到一种方法 - 以它的结果来获得我想要的结果(无论我做什么,总会有一个
B/b.js
A/a.js
目前,我唯一的解决方案是使用后处理脚本在
build/

中移动文件夹,所以我的问题是,我有什么办法可以在不进行后处理的情况下获得所需的结构?也许我不知道某些配置,或某种插件。

[编辑]:如果我使用后处理,则观看文件会受到划伤,因此这是避免它的原因之一。

	

我只是假设您的实际用例很有意义,而您的示例听起来像是胡说八道,因为它被简化为基础知识,足够公平。

typecript没有特征可以将源结构转换为不同的目标结构。但是,您可以使用用于monorepos的

组合项目配置
typescript tsc
1个回答
0
投票
src/A

文件夹编写一个TSCONFIG,一个为您的

src/B

文件夹编写一个,都使用build/A作为输出文件夹。对于您的简单问题来说,这可能看起来像是很多开销,但我敢肯定没有其他仅使用打字稿的解决方案。 首先,您应该创建一个与所有其他TSCONFIG文件共享的设置。您至少需要其中的

tsconfig.base.json
设置:
Tsconfig.base.json

composite

然后您需要root
{
    "compilerOptions": {
        "composite": true
    }
}

tsconfig.json

Tsconfig.json

tsc
然后您需要每个源文件夹中的两个文件:
src/a/tsconfig.json

{ "extends": "./tsconfig.base.json", "references": [ { "path": "./src/A" }, { "path": "./src/B" } ] }

Src/b/tsconfig.json

tsconfig.json

由于您使用共享的输出目录,因此将设置设置为不同的文件名很重要,因为否则

{ "extends": "../../tsconfig.base.json", "compilerOptions": { "outDir": "../../build/A", "rootDir": ".", "tsBuildInfoFile": "../../build/A/a.tsbuildinfo" } } 构建信息{ "extends": "../../tsconfig.base.json", "compilerOptions": { "outDir": "../../build/A", "rootDir": ".", "tsBuildInfoFile": "../../build/A/b.tsbuildinfo" } }

覆盖wording for
tsBuildInfoFile
,杀死Typescript的增量构建功能。

现在您可以使用此命令来构建项目: src/B

并用此命令观看它:

src/A

注意,需要
tsc --build
选项,因为此设置是一个复合项目。
	

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.