【问题标题】:typescript outDir setting in tsconfig.json not workingtsconfig.json 中的 typescript outDir 设置不起作用
【发布时间】: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 标志运行相同的脚本就可以了。

【问题讨论】:

  • 我猜只是打字稿...... ????‍♂️

标签: typescript build package.json tsc 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时也出现此错误。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-08
      • 1970-01-01
      • 2018-03-23
      • 2013-04-07
      • 2018-05-31
      • 2018-03-27
      • 1970-01-01
      • 2020-03-01
      相关资源
      最近更新 更多