我有一个src
目录,其中包含源代码和单元测试,还有一个test
目录,其中包含单独的速度测试。
当我使用tsc
构建项目时,会得到如下目录结构:
dist/
src/
index.js
...
test/
speed-test.js
但是,我希望将“ flat”输出输出到我的dist
目录中,如下所示:
dist/
index.js
...
speed-test.js
...
如果我从speed-test.ts
目录中删除test
,则tsc
不会将src
目录添加到dist
中。仅在有必要(或至少在tsc
决定有需要)使编译后的代码源不清时才添加额外的目录结构。
我确信有时这对于避免文件名冲突非常有用,但是在这种情况下这对我来说并不重要,我宁愿不要获得此额外的“帮助”。
这是我的tsconfig.json
:
{
"compilerOptions": {
"target": "ES6",
"module": "commonjs",
"outDir": "./dist",
"noImplicitAny": true,
"noImplicitThis": true,
"alwaysStrict": true,
"noImplicitReturns": true,
"moduleResolution": "node",
"esModuleInterop": true,
"declaration": true,
"declarationMap": true,
"sourceMap": true,
"resolveJsonModule": true,
"allowSyntheticDefaultImports": true
}
}
我尝试添加"rootDirs"
的{{1}}选项,但这无济于事。
反正我有没有想要的输出结构?
答案 0 :(得分:1)
如果您要省略src
下的额外test
和dist
文件夹,您将要告诉tsc
,它只应编译{下的文件{1}}与给定的src
。
默认情况下,编译器将项目工作区中的所有文件包括在内,因此它需要额外的文件夹结构来区分tsconfig.json
和src
。这也是为什么删除test
时src
中没有创建任何dist
文件夹的原因-现在所有文件都在speed-test.ts
下,因此编译器选择此目录为根。您只能通过include/exclude/files
这样的编译器选项将编译限制为src
:
src
使用rootDir
,您还可以强制{
"compilerOptions": {
...
},
"include": [
"src/**/*"
]
}
中输出的父目录始终为dist
,即使您偶然src
来自{{ 1}}中的一个模块(如果未指定,import
将自动计算为所有输入的父目录)。在这种情况下,src
将终止编译,因为rootDir
不再是所有输入文件的根。
tsc
对于测试文件,您可以使用rootDir
之类的不同配置(或通过{
"compilerOptions": {
"rootDir": "src",
...
}
}
CLI)执行单独的编译步骤。例如。玩笑,here是带有自定义配置文件的示例。或者,您可以只使用tsconfig.test.json
CLI来编译tsc
,然后使用选择的测试工具(不确定要使用的工具是什么)。
希望,有帮助!