I've been using node with typescript and it's amazing.

VERY productive. The key thing is you can do a large refactoring without breaking anything.

The biggest challenge I have right now is actually the tooling. Intellij tends to break sometimes.

I'm using lerna for a monorepo with sub-modules and it's buggy with regular npm.

For example 'npm audit' doesn't work.

I might have to migrate to yarn...

Out of curiosity, why do you use IntelliJ instead of VSCode for a TypeScript codebase? VSCode was practically purpose-built for TypeScript.

IntelliJ is just a very well written IDE. Searching for methods still feels better in IntelliJ. Or the refactoring possibilities like - move an interface/function/class into a separate file and IntelliJ will fix all imports to the reference for you. Under the hood they nowaday also use the language services (like typescript), but there are so many features on top.

VSCode is great at the things you just mentioned. I agree IntelliJ is excellent for Java, but even multi-ecosystem tools tend to be biased towards certain use cases.

Language-servers make the choice of IDE moot. My vim setup is just as capable with typscript as vscode.

They don't completely. They help a ton, but certain IDEs are designed holistically with certain use-cases in mind and have very specific features that lend themselves to those use-cases on top of the basic error/autocomplete language support.

For example, the Rust extension in VSCode gives me an inline button next to any function that's annotated as a test, which I can click to run that test. That's really useful and really specific to Rust. Whereas other IDEs (or other IDE extensions) might just do a bare-bones language server hookup to show errors and that's it.

> For example, the Rust extension in VSCode gives me an inline button next to any function that's annotated as a test, which I can click to run that test

Not an ideal example. The rust-vim plugin supports the same feature (though, naturally via keys instead of mouse).

https://github.com/rust-lang/rust.vim