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.
答案 0 :(得分:20)
当您使用tsc src/index.ts
传入要编译的文件时,您的tsconfig.json
会被忽略。
在命令行上指定输入文件时,tsconfig.json 文件被忽略。
你的npm构建脚本应该只是tsc
而不传递任何文件。
答案 1 :(得分:5)
就我而言,它被忽略了,因为我在 noEmit: true
中有 tsconfig.json
。无论出于何种原因,文件仍然被发出,但在同一目录中而不是跟随outDir
。
正确读取了配置文件,使用标志时也出现此错误。
答案 2 :(得分:2)
如果您使用的是incremental
编译器选项,那么如果您已经删除/修改了outDir
中的文件但还没有删除.tsbuildinfo
文件,则可能不会得到输出。
我的问题有所不同,但是Google将我带到了这里-所以想其他人也可以。
答案 3 :(得分:0)
这是我的文件夹结构。
将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。
将使用js和map.js文件构建outDir文件夹。
答案 4 :(得分:0)
您需要声明tsconfig文件的位置,而不是要构建的文件。
tsc --build mocks/tsconfig.json