Node.js Modules I Can't Live Without
I've been writing and maintaining so many Node.js scripts lately that I've lost count. Node modules allow you to extend scripts to do just about anything you need. There are several Node.js modules that I find myself using over and over again in nearly every project I work on. Here are a few of my favorites that I'm sure will make writing your Node.js scripts easier and more bulletproof. All of these modules are well-documented and supported.
Bluebird
Bluebird is a promise library that outperforms ES6's and other native promise implementations. Bluebird can get very complex, but I find that promisifyAll()
, Promise.all()
, and your standard thenables handle 95% of my needs.
Ramda
Ramda is a practical functional library for JavaScript programmers. Ever since I started playing around with functional JavaScript programming, Ramda has been invaluable. There are custom implementations of the standard map, filter, and reduce methods that take the data as the last parameter. This lets you easily pipe data through composable functions creating elegant, point-free code. The library is loaded with helper functions that can solve almost all of your data transformation needs.
Moment & Moment Timezone
Moment.js and Moment Timezone are two great modules that allow you to "parse, validate, manipulate, and display dates and times in JavaScript." The timezone functionality is extremely helpful and intuitive. Any time there is a need to work with dates and times, I turn to this very reliable codebase.
AWS-SDK
Most of my scripts run on Amazon Web Services, so using the AWS-SDK helps manage everything from security to interacting with SNS and other AWS services. If you're using AWS Lambda, then it is already available and you don't need to include it as a dependency.
https://aws.amazon.com/sdk-for-node-js/
MySQL
Interacting with a MySQL or Aurora database is made much simpler using this excellent module by Doug Wilson. Couple this with the Bluebird promise library using Promise.promisifyAll(require("mysql/lib/Connection").prototype);
and managing asynchronous data calls is extremely easy.
https://github.com/mysqljs/mysql
Redis
NodeRedis is another great project for managing connections to your Redis server or ElasticCache cluster. Support for batching makes sending multiple requests simple, significantly cutting down roundtrips to the server and speeding up your application.
https://github.com/NodeRedis/node_redis
Validator
Validator is a great validation module that will validate strings as email, UUIDs, FQDNs, etc. There are also a bunch of sanitizers that can be used to normalize text.
https://github.com/chriso/validator.js
What are your favorite Node.js modules?
Update: Someone asked me about async / await
instead of promises. I think that is a great approach, but I publish a lot of Node.js on AWS Lambda. As of now it only supports up to v6.10, so I'd have to polyfill.