If you’ve ever worked on a Node.js project, you’ve probably had this experience:
You’re writing an import, your brain says “easy-peasy”, but your editor whispers:
import service from "./../../../path/to/some/service.ts";
Suddenly, you’re not coding anymore. You’re Indiana Jones, lost in a temple of ../
and praying you don’t accidentally end up in the wrong directory.
Well, guess what? Node.js just threw us a lifeline. It’s called Imports via package.json
, and it’s here to kick those ../../../
nightmares out of your life.
Before: The Jungle of Relative Paths
Back in the day, importing a file felt like playing “how many dots can you fit in a path?”
import service from "./../../../path/to/some/service.ts";
This is fine when your project is three files and a dream. But once it grows, you’re basically navigating with Google Maps set to “maze mode.”
After: The Alias Glow-Up
Here’s where the magic happens. Open up your package.json
, sprinkle in a little configuration, and suddenly your imports are as smooth as butter.
"imports": {
"#src/*": "./src/*"
}
That’s it. Seriously. Just one tiny block and your codebase is already breathing easier.
Usage: Imports, But Make Them Sexy
Now instead of typing a path that looks like a family tree gone wrong, you just do this:
import service from '#src/path/to/some/app.ts';
Clean. Simple. Understandable.
And if someone asks, “where’s that service coming from?” you don’t have to pull out a whiteboard and draw arrows through directories.
Why This Rocks
-
No More Dot Gymnastics – Your pinky finger finally gets a break from all those
../
key presses. - Readable Code – Your imports now explain themselves, instead of looking like cryptic treasure maps.
- Future-Proof – This is modern Node.js flexing its muscles. You’re not just writing code, you’re writing fancy code.
Bonus: Pair It with Watch Mode
Check out my other piece: Node.js Just Got Cooler: Native TypeScript and Watch Mode Are Here to Party.
Top comments (2)
At what node.js version is this possible??
It was introduced in Node.js v14.6.0 and was also back‑ported to v12.19.0