我目前有以下项目结构:
project/
tsconfig.json
webpack.config.js
package.json
node_modules/
...lots of dependencies
typings/
...lots of .d.ts files for the dependencies
src/
...folders for files for my projects
我的tsonfig.json
看起来像是:
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"noImplicitAny": false,
"outDir": "./js",
"rootDir": "./src",
"sourceMap": true,
"jsx": "react"
},
"exclude": [
"typings/main.d.ts",
"typings/main",
"node_modules"
]
}
这一切都运行良好,我可以愉快地开发我的应用程序并在浏览器中运行它。
我现在想为我的项目添加一些单元测试,并且来自Java背景,我最初的本能是将测试放在一个单独的文件夹中:
project/
test/
...all of my test cases
当然,test/
文件夹中的文件需要引用我的src/
文件夹中的代码。我该如何设置?
或者它是否更好"将测试内联放在src/
文件夹中,并为它们分别设置webpack.config.js
文件?
对于在大型TypeScript项目中如何实现这一点感到非常困惑。
注意:我看过this,但发现答案不是很有启发性。关于filesGlob
的引用特征讨论似乎对我有帮助,但我想知道人们今天是如何做到的?
答案 0 :(得分:2)
我认为您正在寻找路径映射。使用paths
编译器选项,您不仅可以指定映射到单个位置,还可以指定多个位置。这是the documentation的示例:
"compilerOptions": {
"baseUrl": ".",
"paths": {
"*": [
"*",
"generated/*"
]
}
}
如果编译器在预期位置找不到模块,则会在“generated”子文件夹中重复模块解析。 baseUrl
设置似乎是多余的,但它是强制性的。
答案 1 :(得分:1)
或者它是否更好"将测试内联放在src /文件夹中并为它们提供单独的webpack.config.js文件?
这就是我的工作。不要将TypeScript编译器用作模块捆绑器(特别是如果您不使用模块https://github.com/TypeStrong/atom-typescript/blob/master/docs/out.md)。让它使用webpack对浏览器进行编译和捆绑,并按原样使用(如果使用模块commonjs)用于后端(nodejs)。
答案 2 :(得分:1)
现在除了rootDir
之外,您还可以使用rootDirs
"rootDirs": ["./scripts", "./src"],
用于多个文件夹。