typescript outDir setting in tsconfig.json not working

时间:2017-08-13 13:45:50

标签: typescript build package.json tsc outdir

I can't seem to get the outDir flag working when used in package.json. Directory structure is pretty simple: tsconfig.json at the root level, together with a src/ directory and a single index.ts file plus other directories representing other modules.

When running the tsc command on the index file, it creates a new one beside it instead of in the build directory. What am I doing wrong?

My tsconfig:

{
  "compilerOptions": {
    "outDir": "build"
  }
}

My npm build script:

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

I'm calling the script from the root dir of the project. Interestingly, running the same script with an --outDir flag works just fine.

5 个答案:

答案 0 :(得分:20)

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

来自documentation

  

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

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

答案 1 :(得分:5)

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

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

答案 2 :(得分:2)

如果您使用的是incremental编译器选项,那么如果您已经删除/修改了outDir中的文件但还没有删除.tsbuildinfo文件,则可能不会得到输出。

>

我的问题有所不同,但是Google将我带到了这里-所以想其他人也可以。

答案 3 :(得分:0)

这是我的文件夹结构。

enter image description here

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

在tsconfig json文件中,在compilerOptions

中为outDir添加foldername
"compilerOptions": {    
    "outDir": "build",
    "module": "commonjs",
    "target": "es6",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "noImplicitAny": true,
    "sourceMap": true
  },

并运行以下命令。

只需cd到根文件夹并输入

即可
  

TSC

  

tsc --outDir。

enter image description here

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

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

答案 4 :(得分:0)

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

tsc --build mocks/tsconfig.json