我有一个(想要的)结构,如下所示:
- tsconfig.json
- src
- app.ts
- tests
- appTest.ts
- appTest.js
- dist
- app.js
如果没有
tests
文件夹,则像这样的tsconfig.json可以正常工作:{
"compilerOptions": {
"outDir":"dist"
},
"include" :[
"src/**/*.ts"
]
}
但是,如果我将
tests/**/*.ts
添加到include
元素,它也会将我的测试文件编译为dist
并更改其文件夹结构(可以理解,但不希望如此)。我可以告诉TypeScript编译器在项目中包括测试文件以支持诸如重构之类的事情,但将它们从输出省略为
dist
吗?具体来说,我希望按照上述结构中的建议,将.js
编译在tests
目录中。 最佳答案
完全分离测试如何?
就像是:
- scripts
- tsconfig.json
- src
- app.ts
- dist
- app.js
- tests
- tsconfig.json
- src
- appTest.ts
- bin
- appTest.js
然后
scripts/tsconfig.json
将如下所示:"compilerOptions": {
"outDir": "dist",
"rootDir": "src",
...
}
tests/tsconfig.json
看起来像:"compilerOptions": {
"outDir": "bin",
"rootDir": "src",
...
}
编辑
我在webstorm中检查了此解决方案,有两种选择:
(1)测试从
scripts/dist
导入的文件:scripts/tsconfig.json
:"compilerOptions": {
"outDir": "dist",
"rootDir": "src",
"declaration": true
}
tests/tsconfig.json
:"compilerOptions": {
"outDir": "bin",
"rootDir": "src"
}
tests/src/apptest.ts
:import * as app from "../../scripts/dist/app";
...
结果
tests/bin
将如下所示:- tests
- bin
- apptest.js
而且,当您重构
scripts
时,假设scripts/src/app.ts
确实对tests/src/apptest.ts
没有影响,但是由于源中的重构,它的编译将失败。因此,您将知道需要更改测试文件(尽管它不是自动的)。
(2)测试从
scripts/src
导入的文件:scripts/tsconfig.json
文件不需要启用declaration
选项,因为我们将直接使用源代码。tests/src/apptest.ts
:import * as app from "../../scripts/dist/src";
...
重构源将根据需要更改测试文件,但是
tests/bin
中的输出是这样的:- tests
- bin
- scripts
- src
- app.js
- tests
- src
- apptest.js
如果您不介意
tests/bin
的此结构,则无需使用其他工具即可获得所需的内容。关于typescript - tsconfig.json用于 `src`和 `tests`的项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40324229/