These launch configs will allow you to debug typescript files directly from VSCode. It will honor the tsconfig
and resolve node modules properly. You do not need to install ts-node
or nodemon
, as everything is run using npx
. The first
{
"configurations": [
{
"type": "node",
"request": "launch",
"name": "ts-node - current file",
"runtimeExecutable": "npx",
"runtimeArgs": ["-y", "ts-node"],
"program": "${file}",
"cwd": "${fileDirname}",
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen"
},
{
"type": "node",
"request": "launch",
"name": "ts-node - watch current file",
"runtimeExecutable": "npx",
"runtimeArgs": [
"-y",
"nodemon",
"-q",
"--exec",
"npx",
"-y",
"ts-node"
],
"program": "${file}",
"cwd": "${fileDirname}",
"restart": true,
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen"
},
],
}
The first one is pretty straightforward. If the file is src/path/to/example.ts
, this is the equivalent of:
cd src/path/to
npx -y ts-node example.ts
It's better to use cwd
in this way, as this allows for nested tsconfig
files as may appear in a monorepo.
The second one had to be a bit sneaky because of quirks in nodemon
. They recently added TypeScript support, but internally it simply runs the ts-node
command instead of node
. However, to avoid the dependency for those using regular JS, they didn't add ts-node
to its dependencies, so npx nodemon
doesn't supply the dependency. You could avoid this by installing it in the project with npm i -D ts-node
, but I wanted these to work without installing anything. This is solved with the --exec
option by compounding npx
scripts. The second config is equivalent to:
cd src/path/to
npx -y nodemon -q --exec 'npx -y ts-node' ./example.ts