Typescript 为什么我的outDir包含(大部分重复的)src dir?
当我的项目传输时,我得到一个这样的结构,其中src\index.ts被传输到lib\index.js和lib\src\index.js。但是lib\index.js似乎并没有更新所有的更改。为什么呢?为什么连两份都有Typescript 为什么我的outDir包含(大部分重复的)src dir?,typescript,Typescript,当我的项目传输时,我得到一个这样的结构,其中src\index.ts被传输到lib\index.js和lib\src\index.js。但是lib\index.js似乎并没有更新所有的更改。为什么呢?为什么连两份都有 +---functions | | .gitignore | | config.json | | package-lock.json | | package.json | | tsconfig.json | | tslint.json
+---functions
| | .gitignore
| | config.json
| | package-lock.json
| | package.json
| | tsconfig.json
| | tslint.json
| |
| +---lib
| | | index.js
| | | index.js.map
| | |
| | \---src
| | index.js *this one seems to be getting compiled*
| | index.js.map
| \---src
| index.ts
我的tConfig
{
"compilerOptions": {
"module": "commonjs",
"noImplicitReturns": true,
"noUnusedLocals": true,
"outDir": "lib",
"sourceMap": true,
"strict": true,
"target": "es2017",
"resolveJsonModule": true,
"esModuleInterop": true,
},
"compileOnSave": true,
"include": [
"src"
]
}
lib\src\index.js
很可能是以前某个版本的陈旧输出编译,您还试图从src
的父目录导入文件。原因是TypeScript中的隐式rootDir
设置
rootDir
rootDir
与控制输出目录结构以及outDir
选项相关。如果您没有明确设置它,它将被计算为所有输入文件(包括导入的模块)的公共根目录。当编译器写入输出时,它确定每个输入文件的输出位置,如下所示:从输入文件路径中剥离rootDir
,并将outDir
前置到它
示例
您的项目根目录是函数
目录。您可以从functions/src
导入所有内容,还可以导入一个模块functions/foo.ts
(假定没有rootDir
集)。然后:
设置为rootDir
,而不是functions
functions/src
函数/src/index.ts的输出位置为:
- 从
=>functions/src/index.ts
src/index.ts
- Prepend
=>functions/lib
functions/lib/src/index.ts
- 从
functions/lib/src/index.js
。如果要防止这种情况发生,请明确地将rootDir
设置为src
(相对于tsconfig.json的路径)。如果不是所有的输入都在这个文件夹下,TypeScript会抱怨
希望有帮助。您是否导入了
src
文件夹之外的任何源文件?我试图从src的父目录导入一个文件,但弄乱了文件并将其移到了src中,问题似乎得到了解决。来这里看你的评论。是什么给了你这样的洞察力?好吧,那么我的假设似乎是正确的。当我有时间写信时,我会给你一个答复。