我正在将Microsoft TypeScript starter作为初始参考,将旧版节点/表达代码库转换为TypeScript。
在此参考中,输出编译为dist
,但是当在allowJS
中启用tsconfig.json
时,输出会发射到dist/src
-为什么?
这里是我的tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"noImplicitAny": false,
"moduleResolution": "node",
"sourceMap": true,
"rootDir" : "./",
"outDir": "dist",
"baseUrl": ".",
"allowJs": true,
"paths": {
"*": [
"node_modules/*",
"src/types/*"
]
}
},
"include": [
"src/**/*"
]
}
rootDir
更改为./src
,但是它给出了一个错误消息,指出“ node_modules / someModule”不在src根目录中。 tsconfig.json
移至src,但未生成任何输出。 AllowJS
[输出在/dist
下正确映射,直到allowJS
中的tsconfig.json
标志打开,然后在/dist/src
中显示输出
这里发生两件事:
rootDir
来决定输出的目录结构(请参阅this comment from Typescript's bossman)。rootDir
中仅可编译/发出tsc
中的代码。rootDir
,则默认为./
(相对于tsconfig)... 除非您包含了./
之外的内容, tsc
,在这种情况下,它会强制rootDir
自动设置为包含所有源的目录。allowJS
设置告诉tsc
将.js
代码视为源,并将其也发送到outDir
。[我怀疑启用allowJS
后,tsc现在必须将.js
之外的src
代码发送到outDir
,因此它会自动将rootDir
上移一个级别。由于src
现在是rootDir
的子目录,因此将其镜像到outDir
中。
请参见this answer,该解决方案使您可以使src
保留为rootDir,并且还可以包含其外部的代码。
听起来像您的编译器(TSC)配置文件的声音,可能是您希望编译器开始链接过程的起点。您可以尝试将其降低到某个水平并让我们知道会发生什么吗?
希望这会有所帮助。