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

ary*_*ing 21 build typescript tsc outdir package.json

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

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

我的tsconfig:

{
  "compilerOptions": {
    "outDir": "build"
  }
}
Run Code Online (Sandbox Code Playgroud)

我的npm构建脚本:

"build": "tsc src/index.ts"
Run Code Online (Sandbox Code Playgroud)

我正在从项目的根目录调用脚本.有趣的是,使用--outDir标志运行相同的脚本可以正常工作.

Sar*_*ana 35

传入要编译的文件时tsc src/index.ts,会tsconfig.json被忽略.

文档:

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

你的npm构建脚本应该tsc没有传递任何文件.

  • 什么?!为什么?荒谬的。 (28认同)
  • 不知道为什么会这样,但答案是 100% 准确的。谢谢 (4认同)

jos*_*eir 12

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

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


cha*_*doo 9

这是我的文件夹结构。

在此输入图像描述

将 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
  },
Run Code Online (Sandbox Code Playgroud)

并运行以下命令。

只需 cd 到根文件夹并输入

TSC

或者

tsc --outDir 。

在此输入图像描述

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

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


fre*_*nte 8

就我而言,它被忽略了,因为我noEmit: truetsconfig.json. 无论出于何种原因,这些文件仍然被发出,但在同一个目录中而不是跟随outDir.

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

  • 我添加了 "noEmit": false 最后创建并填充了我的 outDir (2认同)

小智 5

也许我遇到了同样的问题。您应该将脚本设置为 "build": "tsc" 而不是 "build": "tsc src/index.ts"