I am using Visual Studio Code and have a fairly common project structure:
├── client/
│ ├── tsconfig.json
├── shared/
├── server/
│ ├── tsconfig.json
├── project.json
The two tsconfig files have different settings (e.g. the one under client/
targets ES5, the one under server/
targets ES6). Note that there is no tsconfig in the root directory.
The problem is that I want the shared directory to be included in both projects. I can't do this using tsconfig because the exclude
option won't let me include a folder that is in a higher directory than the tsconfig.json, and using files
I have to constantly keep the list of files up to date as it doesn't support globs.
Note that I can compile fine by adding the shared folder into tsc, what I want is for the Visual Studio Code IDE to recognise the shared code for intellisense etc.
Is the only option to wait for filesGlob?
Use a single tsconfig.json
for the root. And then extend it for each project (backend tsconfig.server.json
, frontend tsconfig.webpack.json
).
tsconfig.json
include: ['src']
to ensure all files get typechecked in the IDEtsconfig.server.json
exclude: ['src/app']
the frontend files tsconfig.webpack.json
exclude: ['src/server']
the backend files ├── src/
│ ├── app/ < Frontend
│ ├── server/ < Backend
│ ├── common/ < Shared
├── tsconfig.json
├── tsconfig.server.json
├── tsconfig.webpack.json
tsconfig.json
{
"compilerOptions": {
"noImplicitAny": true,
"strictNullChecks": true
},
"include": [
"src"
]
}
tsconfig.webpack.json
{
"extends": "./tsconfig.json",
"exclude": [
"src/app"
]
}
tsconfig.server.json
{
"extends": "./tsconfig.json",
"exclude": [
"src/server"
]
}