在
outDir
中使用时,我似乎无法使 package.json
标志正常工作。目录结构非常简单:根级别的 tsconfig.json
,以及 src/
目录和单个 index.ts 文件以及代表其他模块的其他目录。
在索引文件上运行
tsc
命令时,它会在索引文件旁边而不是在构建目录中创建一个新文件。我做错了什么?
我的 tsconfig:
{
"compilerOptions": {
"outDir": "build"
}
}
我的 npm 构建脚本:
"build": "tsc src/index.ts"
我从项目的根目录调用脚本。有趣的是,使用
--outDir
标志运行相同的脚本效果很好。
当您使用
tsc src/index.ts
传入文件进行编译时,您的 tsconfig.json
将被忽略。
来自文档:
当在命令行上指定输入文件时,tsconfig.json 文件被忽略。
您的 npm 构建脚本应该只是
tsc
,而不传递任何文件。
就我而言,它被忽略了,因为我在
noEmit: true
中有 tsconfig.json
。无论出于何种原因,文件 still 已发出,但位于同一目录中,而不是跟随 outDir
。
配置文件读取正确,使用flag时也出现此错误。
incremental
编译器选项,并且已删除/修改 outDir
中的文件但尚未删除 .tsbuildinfo
文件,则可能无法获得输出。
我的问题有点不同,但谷歌把我带到了这里 - 所以认为其他人也可能如此。
这是我的文件夹结构。
将 typescript 文件保留在 src 文件夹中,并将 tsconfig.json 保留在 root 中。
在 tsconfig json 文件中为编译器选项中的 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 文件夹。
也许我遇到了同样的问题。 您应该将脚本设置为 "build": "tsc" 而不是 "build": "tsc src/index.ts"
确保“outDir”在“compilerOptions”下定义
我将其定义在与“compilerOptions”相同的级别
{
"compilerOptions": {
"baseUrl": "node_modules/@types",
"lib": [
"es6"
],
"outDir": "dist",
"esModuleInterop": true,
},
"exclude": [
"node_modules"
],
"include": [
"src/**/*"
],
}
您需要声明您的 tsconfig 文件位置,而不是您要构建的文件。
tsc --build mocks/tsconfig.json
这对我有用
tsc --outDir dist/
其中dist是我的输出或目标文件夹
在 tsconfig.json 中设置 "noEmit": false