How to Restart the TypeScript NodeJS Application Fast

Written by naveenda | Published 2020/09/29
Tech Story Tags: typescript | nodejs | development | faster-backend | code | coding | programming | nodejs-developer | web-monetization

TLDR How to Restart the TypeScript NodeJS Application Fast: How to restart the Typescript NodeJS application Fast. I found a way to improve the performance and code quality of NodeJS-Typescript. I recommend to everyone use the ts-node-dev-instead of ts- node-node for your NodeJS project-Typscript project-typescript project. I have been working for the different kinds of Node JS application from the last 4 years. For every project I tried to improve. For example, I used the nodejs-typscript tool for developing typescript.via the TL;DR App

I have been working for the different kinds of Node JS application from the last 4 years. For every project I tried to improve the performance and code quality. From that, I found a very interesting way to restart the typescript application so fast.

Introduction

When you are working with Node JS with Typescript you notice a significant delay while restarting the application by using ts-node.
ts-node
one of the best tool for NodeJS-Typescript development but when comes to typescript it doesn't do the best job.

Typical Typescript NodeJS App

A typical nodejs-typescript
nodemon.json 
look like these
{
    "watch" : ["src"],
    "ext" : "ts",
    "exec": "ts-node ./src/app/server.ts"
}
It will work fine but restart speed is too slow.
Don't trust the Server Start time here, it actually took more than 20 seconds to restart.

Trail 1

So I was playing with the nodemon options to make restart faster and found we map our executable with params, so I create this configuration for
nodemon.json
{
  "env": {
    "NODE_ENV": "development"
  },
  "execMap": {
    "ts": "node --require ts-node/register"
  },
  "ext": "js,json,ts",
  "ignore": [
    ".git",
    "node_modules/**/node_modules"
  ],
  "restartable": "rs",
  "watch": [
    "src/"
  ]
}
This increase the restarting speed, but that not enough for me. So again I started to digging through Google to find better ways.

Trail 2

Now I learned to diagnosis typescript and analysis my project by using this command:
./node_modules/.bin/tsc -project ./tsconfig.json --diagnostics
This gives an output like these:
Files:              372
Lines:            66423
Nodes:           253384
Identifiers:      89381
Symbols:          62938
Types:             3327
Instantiations:    7640
Memory used:    108724K
I/O read:         0.98s
I/O write:        0.02s
Parse time:       2.20s
Bind time:        0.40s
Check time:       0.29s
Emit time:        0.16s
Total time:       3.04s
I found
tsc
the command takes only 3 seconds to diagnosis the entire project and the
parse time
is only taking the time. So started to find an alternatives for the ts-node.
Instead of using
ts-node
I tried to restart the application using
tsc
command.
{
"dev": "concurrently \"tsc -w\" \"nodemon dist/app/server.js\""
}
This improves the restarting speed significantly

Trail 3

tsc
command works great for me, but I still digging google due to curiosity and found a package called ts-node-dev
ts-node-dev 
works very different than ts-node. It restarts the target node process only when the files changes and also provide the same file for typescript compilation process between restarts.
This significantly increases the speed of restarting comparing to 
nodemon -x ts-node
, etc...
Step 1: Install the package
npm i ts-node-dev --save-dev
Step 2: Add Configuration
{
    "dev": "node_modules/.bin/ts-node-dev --respawn --notify false --prefer-ts --ignore-watch node_modules -- src/app/server.ts "

}
This is the exact configuration I used in my project, this works very fine to me.
Step 3: Starts the application
npm run dev
This will restart the application every time you change a file with blazing speed.

Conclusion

After testing a lot of tool for developing typescript-nodejs I found the ts-node-dev work like a pro. I recommend to everyone to use the
ts-node-dev
instead of ts-node for your NodeJS-Typescript project.
If you stick this far, thank you so much for reading this article and please consider to follow me on twitter

Published by HackerNoon on 2020/09/29