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