tsconfig.json 中的 typescript outDir 设置不起作用

Posted

技术标签:

【中文标题】tsconfig.json 中的 typescript outDir 设置不起作用【英文标题】:typescript outDir setting in tsconfig.json not working 【发布时间】:2018-01-21 11:54:06 【问题描述】:

package.json 中使用时,outDir 标志似乎无法正常工作。目录结构非常简单:根级别的tsconfig.json,以及一个src/ 目录和一个index.ts 文件以及代表其他模块的其他目录。

在索引文件上运行tsc 命令时,它会在它旁边而不是在构建目录中创建一个新的。我做错了什么?

我的 tsconfig:


  "compilerOptions": 
    "outDir": "build"
  

我的 npm 构建脚本:

"build": "tsc src/index.ts"

我从项目的根目录调用脚本。有趣的是,使用 --outDir 标志运行相同的脚本就可以了。

【问题讨论】:

我猜只是打字稿...... ????‍♂️ 【参考方案1】:

当您使用tsc src/index.ts 传递文件进行编译时,您的tsconfig.json 将被忽略。

来自documentation:

在命令行中指定输入文件时,tsconfig.json 文件被忽略。

您的 npm 构建脚本应该只是 tsc 而不传递任何文件。

【讨论】:

什么?!为什么?可笑。 不知道为什么会这样,但答案是 100% 准确的。谢谢【参考方案2】:

这是我的文件夹结构。

将 typescript 文件保存在 src 文件夹中,并将 tsconfig.json 保存在根目录中。

在 tsconfig json 文件中为 compilerOptions 中的 outDir 添加文件夹名称

"compilerOptions":     
    "outDir": "build",
    "module": "commonjs",
    "target": "es6",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "noImplicitAny": true,
    "sourceMap": true
  ,

并运行以下命令。

只需 cd 到根文件夹并键入

tsc

tsc --outDir .

这将使用 js 和 map.js 文件构建 outDir 文件夹。

来源:https://github.com/Microsoft/TypeScript/issues/10585

【讨论】:

【参考方案3】:

如果您使用incremental 编译器选项,如果您已删除/修改了outDir 中的文件但尚未删除.tsbuildinfo 文件,则可能无法获得输出。

我的问题有点不同,但 Google 把我带到了这里 - 所以认为其他人也可能会。

【讨论】:

感谢您决定在这里发帖!我不明白为什么tsc -b 只会偶尔创建我的输出文件夹。结果我的yarn:clean 只会rm -rf packages*/dist,留下.tsbuildinfo 文件!【参考方案4】:

您需要声明您的 tsconfig 文件位置,而不是您要构建的文件。

tsc --build mocks/tsconfig.json

【讨论】:

【参考方案5】:

就我而言,它被忽略了,因为我在 tsconfig.json 中有 noEmit: true。无论出于何种原因,文件仍然被发出,但在同一目录中而不是在outDir之后。

配置文件被正确读取,使用flag时也出现此错误。

【讨论】:

正在扩展ts-config-single-spa,其中有noEmit: true

以上是关于tsconfig.json 中的 typescript outDir 设置不起作用的主要内容,如果未能解决你的问题,请参考以下文章

打字稿 2.0。 tsconfig.json 中的“类型”字段

未找到 tsconfig.json 中的 TypeScript 路径别名

VSCode / tslint 不解析 tsconfig.json 中的路径

typescript 动态导入与 tsconfig.json 中的 webpack.config 冲突?

typescript中的tsconfig.json文件配置说明includeexcludeextendsfilescompilerOptionstargetmoduleoutDir

如何为不在@types 中的类型配置 tsconfig.json?