Reputation: 5877
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.
Upvotes: 127
Views: 88074
Reputation: 19
This worked for me tsc --outDir dist/
where dist is my output or destination folder
Upvotes: 1
Reputation: 61
Maybe I met the same problem. Your should set the script as "build": "tsc" rather than "build": "tsc src/index.ts"
Upvotes: 6
Reputation: 6623
Make sure "outDir" is defined under "compilerOptions"
I had it defined at the same level as "compilerOptions"
{
"compilerOptions": {
"baseUrl": "node_modules/@types",
"lib": [
"es6"
],
"outDir": "dist",
"esModuleInterop": true,
},
"exclude": [
"node_modules"
],
"include": [
"src/**/*"
],
}
Upvotes: 4
Reputation: 31858
In my case it was being ignored because I had noEmit: true
in tsconfig.json
. For whatever reason, the files still were emitted, but in the same directory instead of following outDir
.
The config file was read correctly and this error also appeared when using the flag.
Upvotes: 50
Reputation: 5602
You need to declare your tsconfig file location instead of the file you want to build.
tsc --build mocks/tsconfig.json
Upvotes: 0
Reputation: 5627
If you are using the incremental
compiler option, you may not be getting output if you have deleted / modified files in your outDir
but have not removed the .tsbuildinfo
file.
My issue was a bit different, but Google brought me here - so figured others may also.
Upvotes: 14
Reputation: 1316
This is my folder structure.
Keep the typescript files in src folder and keep the tsconfig.json in root.
In tsconfig json file add foldername for outDir in compilerOptions
"compilerOptions": {
"outDir": "build",
"module": "commonjs",
"target": "es6",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"noImplicitAny": true,
"sourceMap": true
},
and run the below commands.
just cd to the root folder and type
tsc
or
tsc --outDir .
which will build the outDir folder with js and map.js files.
source: https://github.com/Microsoft/TypeScript/issues/10585
Upvotes: 10
Reputation: 40712
When you pass in files for compilation with tsc src/index.ts
, your tsconfig.json
is ignored.
From the documentation:
When input files are specified on the command line, tsconfig.json files are ignored.
Your npm build script should just be tsc
without passing any files.
Upvotes: 248