My Node.js Quadfecta

I’ve been doing JavaScript development for a little over two years now. It’s only recently though that I’ve discovered my perfect starter tools for building out the perfect maintainable project.

Most of the JS work that I’ve done in the last few years has been solely with a service company, where there was a very strict “7.5 billable hours a day” kind of mentality from the higher ups, which made it very difficult to put time into discovering the most sustainable tools, and doing general research.

Since I started doing Node.js development on my spare time, rather than at my job, I’ve had a chance to spread my wings and seek out the tools that I need to confidently build applications and tools. I tend to build out little projects here and there as I find needs for things, and it’s nice being able to build it once and forget about it, than to have something running for a few weeks, only to have it fall to shambles as soon as a previously unconsidered set of inputs becomes the norm.

So I’ve done my digging, and I’ve found my 4-tool set that gives me everything I think I need to build out completely robust tools and applications.

Documentation

For my documentation, I’ve had a lot of success with jsdoc. It’s actively maintained, and provides a fairly standard JavaDoc style comment parser. Its output is pretty damn nice looking for the built-in template, and there’re a plethora of additional templates that you can find or build out yourself.

Tests

Although it seems a little less maintained, and has a lot less community love than some of the other frameworks, I’ve come to love nodeunit. While it hasn’t been updated in a little bit (a few months at the time of writing), it provides the most succinct interface I’ve used, and it provides the ability to have setUp and tearDown methods, which I’ve become accustomed to in Objective-C and Python testing work I’ve done in the past.

Lint

For linting, I’ve found a home with eslint. It provides a decent number of configuration flags that can be used to make sure that code comes out just the way you like it. It can be kind of annoying when you’re constantly reminded that you can’t even adhere to your own coding style, but it definitely helps keeps things consistent.

Coverage

Code coverage is the newest addition to my bag of tools with JS development. Istanbul is the package that takes care of this for me. Unlike other coverage tools that I’ve found, it doesn’t require modification to your package’s entry point for it to carry out its task. It works right out of the box without any need to change the project itself.

My template

I decided to make a repo out of my super barebones nearly code-less node project structure. Take a look at if you want. It’s a decent structural starting point for any npm package. It can be pretty easily extended to work with an entire application. It’s set up to not require any globally installed packages for the packages listed above.