I have a typescript nodejs server with this structure:
tsconfig.json
package.json
src/
middleware/
utils/
index.ts
dist/
middleware/
utils/
index.ts
When using Typescript 2, I was able to transpile my project from the src/ to a dist/ folder and have a mirror image of my directory structure to work with.
With the release of Typescript 3 they have introduced project references and changed the way code is transpiled into an output directory. Now tsc
outputs to the dist/ folder in a nested way like this:
dist/
src/
middleware/
utils/
index.ts
My tsconfig.json is:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"allowJs": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"resolveJsonModule": true,
"declaration": false,
"outDir": "dist/",
"lib": [
"es7",
"dom"
]
},
"include": [
"src/"
]
}
How can I configure Typescript to output my src/ folder as a mirror image into a dist/ folder?
I had a similar problem when initially converting to a Typescript project. I also set resolveJsonModule: true
and the src
directory was copied to the output dist
directory.
The underlying reason is that one of my source files require
d package.json at the root of the project. Once i removed that, tsc no longer added src to the dist directory.
In short, make sure you are not requiring files outside of your src directory.
Explanatory FAQ here: https://github.com/Microsoft/TypeScript/wiki/FAQ#why-does---outdir-moves-output-after-adding-a-new-file