Pages

Friday, 1 July 2016

awesome-nodejs

Delightful Node.js packages and resources.

A curated list of delightful Node.js packages and resources.
Inspired by the awesome list thing. You might also like awesome-npm.
Please read the contribution guidelines before contributing.
Check out my blog 🦄 or say hi on Twitter.

Table of Contents

Packages

Mad science

  • webtorrent - Streaming torrent client for Node.js and the browser.
  • GitTorrent - Peer-to-peer network of Git repositories being shared over BitTorrent.
  • peerflix - Streaming torrent client.
  • dat - Real-time replication and versioning for data sets.
  • ipfs - Distributed file system that seeks to connect all computing devices with the same system of files.
  • stackgl - Open software ecosystem for WebGL, built on top of browserify and npm.
  • peerwiki - All of Wikipedia on BitTorrent.
  • peercast - Stream a torrent video to Chromecast.
  • BitcoinJS - Clean, readable, proven Bitcoin library.
  • Bitcore - A pure and powerful Bitcoin library.
  • PDFKit - PDF generation library.
  • turf - Modular geospatial processing and analysis engine.
  • webcat - p2p pipe across the web using WebRTC that uses your GitHub private/public key for authentication.
  • js-git - JavaScript implementation of Git.
  • NodeOS - The first operating system powered by npm.
  • limdu - Machine-learning framework.
  • Cytoscape.js - Graph theory (a.k.a. network) modeling and analysis.
  • kad - Kademlia distributed hash table.

Command-line apps

  • pageres - Capture website screenshots.
  • trash - A safer alternative to rm.
  • npm-name - Check whether a package name is available on npm.
  • XO - Enforce strict code style using the JavaScript happiness style.
  • speed-test - Test your internet connection speed and ping.
  • np - A better npm publish.
  • yo - Run Yeoman generators.
  • Babel - Use next generation JavaScript, today.
  • ESLint - The pluggable linting utility for JavaScript.
  • Standard - JavaScript Standard Style — One style to rule them all.
  • cpy - Copy files.
  • fkill - Fabulously kill processes. Cross-platform.
  • vantage - Distributed, realtime CLI for your live app.
  • vtop - More better top, with nice charts.
  • tmpin - Adds stdin support to any CLI app that accepts file input.
  • empty-trash - Empty the trash.
  • is-up - Check whether a website is up or down.
  • is-online - Check if the internet connection is up.
  • public-ip - Get your public IP address.
  • dark-mode - Toggle the macOS Dark Mode.
  • ttystudio - Record your terminal and compile it to a GIF or APNG without any external dependencies, bash scripts, gif concatenation, etc.
  • David - Tells you when your package npm dependencies are out of date.
  • http-server - Simple, zero-config command-line HTTP server.
  • Live Server - A simple development HTTP-server with livereload capability.
  • bcat - Pipe command output to web browsers.
  • normit - Google Translate with speech synthesis in your terminal.
  • slap - Sublime-like terminal-based text editor.
  • jsinspect - Detect copy-pasted and structurally similar code.
  • esformatter - JavaScript code beautifier/formatter.
  • pjs - Pipeable JavaScript. Quickly filter, map, and reduce from the terminal.
  • license-checker - Check licenses of your app's dependencies.
  • browser-run - Easily run code in a browser environment.
  • modhelp - Syntax-highlighted module READMEs in terminal with ANSI-friendly pager.
  • wifi-password - Get the current wifi password.
  • wallpaper - Change the desktop wallpaper.
  • brightness - Change the screen brightness.
  • torrent - Download torrents.
  • tfa - Two-factor authentication client.
  • rtail - Terminal output to the browser in seconds, using UNIX pipes.
  • kill-tabs - Kill all Chrome tabs to improve performance, decrease battery usage, and save memory.
  • alex - Catch insensitive, inconsiderate writing.
  • pen - Live Markdown preview in the browser from your favorite editor.
  • subdownloader - Subtitle downloader for movies and TV series.
  • iponmap - IP location finder.
  • Jsome - Pretty prints JSON with configurable colors and indentation.
  • itunes-remote - Interactively control iTunes.
  • dev-time - Get the current local time of a GitHub user.
  • text-meme - Generate a text meme.
  • mobicon - Mobile app icon generator.
  • mobisplash - Mobile app splash screen generator.
  • diff2html-cli - Pretty git diff to HTML generator.
  • Cash - Cross-platform Unix shell commands in pure JavaScript.
  • vaca - Get a random ASCII 🐮.
  • gh-home - Open the GitHub page of the repo in the current directory.
  • npm-home - Open the npm page of a package.
  • trymodule - Try out npm packages in the terminal.
  • terminal-recorder - Record your terminal usage and export it to interactive HTML.
  • jscpd - Copy/paste detector for source code.

Functional programming

  • lodash - A utility library delivering consistency, customization, performance, & extras. A better and faster Underscore.js.
  • immutable - Immutable data collections.
  • mori - A library for using ClojureScript's persistent data structures and supporting API from the comfort of vanilla JavaScript.
  • Ramda - A utility library with a focus on flexible functional composition enabled by automatic currying and reversed argument order. Avoids mutating data.
  • Folktale - A suite of libraries for generic functional programming in JavaScript that allows you to write elegant, modular applications with fewer bugs, and more reuse.
  • underscore-contrib - The brass buckles on Underscore's utility belt.
  • Mout - Utility library with the biggest difference between other existing solutions is that you can choose to load only the modules/functions that you need, no extra overhead.
  • Bacon.js - Functional reactive programming.
  • RxJS - Functional reactive library for transforming, composing, and querying various kinds of data.
  • Lazy.js - Utility library similar to lodash/Underscore but with lazy evaluation, which can translate to superior performance in many cases.
  • Kefir.js - Reactive library with focus on high performance and low memory usage.

HTTP

  • got - A nicer interface to the built-in http module.
  • gh-got - Convenience wrapper for got to interact with the GitHub API.
  • request - Simplified HTTP request client.
  • Nock - A HTTP mocking and expectations library.
  • hyperquest - Streaming HTTP requests.
  • axios - Promise based HTTP client (works in the browser too).
  • spdy - Creates SPDY servers with the same API as the built-in https module.
  • wreck - HTTP Client Utilities.
  • download - Download and extract files effortlessly.
  • http-proxy - A full-featured HTTP proxy.
  • rocky - Featured, middleware-oriented HTTP proxy with traffic replay and intercept.
  • superagent - A small progressive HTTP request library.
  • node-fetch - window.fetch for Node.js.

Debugging / Profiling

  • ironNode - Node.js debugger supporting ES2015 out of the box.
  • node-inspector - Debugger based on Blink Developer Tools.
  • Theseus - A new type of JavaScript debugger featuring real-time code coverage, retroactive inspection and asynchronous call tree.
  • longjohn - Long stack traces with configurable call trace length.
  • debug - Tiny debugging utility.
  • jstrace - Dynamic tracing for JavaScript, similar to dtrace, ktap etc.
  • why-is-node-running - Node.js is running but you don't know why?
  • njsTrace - Instrument and trace your code, see all function calls, arguments, return values, as well as the time spent in each function.
  • vstream - Instrumentable streams mix-ins to inspect a pipeline of streams.
  • stackman - Enhance an error stacktrace with code excerpts and other goodies.
  • TraceGL - Transforms your JavaScript, injecting monitoring code that produces a log of everything that happens.
  • locus - Starts a REPL at runtime that has access to all variables.
  • bugger - Provides Chrome Devtools bindings to debug programs in Chrome.
  • 0x - Flamegraph profiling.
  • ctrace - Well-formatted and improved trace system calls and signals.

Logging

  • winston - A multi-transport async logging library.
  • Bunyan - A simple and fast JSON logging library.
  • intel - A comprehensive logging library (handlers, filters, formatters, console injection).
  • console-log-level - The most simple logger imaginable with support for log levels and custom prefixes.
  • storyboard - End-to-end, hierarchical, real-time, colorful logs and stories.

Command-line utilities

  • chalk - Terminal string styling done right.
  • meow - CLI app helper.
  • minimist - Parse command-line flags.
  • get-stdin - Easier stdin.
  • user-home - Get the path to the user home directory.
  • log-update - Log by overwriting the previous output in the terminal. Useful for rendering progress bars, animations, etc.
  • Inquirer.js - Interactive command-line prompt.
  • update-notifier - Update notifications for your CLI app.
  • ansi-escapes - ANSI escape codes for manipulating the terminal.
  • sudo-block - Block users from running your app with root permissions.
  • configstore - Easily load and persist config without having to think about where and how.
  • insight - Helps you understand how your tool is being used by anonymously reporting usage metrics to Google Analytics.
  • log-symbols - Colored symbols for various log levels.
  • figures - Unicode symbols with Windows CMD fallbacks.
  • boxen - Create boxes in the terminal.
  • string-width - Get the visual width of a string - the number of columns required to display it.
  • first-run - Check if it's the first time the process is run.
  • sparkly - Generate sparklines ▁▂▃▅▂▇
  • vorpal - A framework for interactive CLI apps.
  • blessed - A curses-like library.
  • yn - Parse yes/no like values.
  • cli-table - Pretty unicode tables.
  • drawille - Draw on the terminal with unicode braille characters.
  • googleauth - Create and load persistent Google authentication tokens for command-line apps.
  • ascii-charts - ASCII bar chart in the terminal.
  • progress - Flexible ascii progress bar.
  • cli-cursor - Toggle the CLI cursor.
  • columnify - Create text-based columns suitable for console output. Supports cell wrapping.
  • cli-columns - Columnated unicode and ansi-safe text lists.
  • cfonts - Sexy ASCII fonts for the console.
  • multispinner - Multiple, simultaneous, individually controllable CLI spinners.
  • omelette - Shell autocompletion helper.
  • cross-env - Set environment variables cross-platform.
  • shelljs - Portable Unix shell commands.
  • loud-rejection - Make unhandled promise rejections fail loudly instead of the default silent fail.
  • ora - Elegant terminal spinner.
  • term-img - Display images in your terminal.
  • yargs - Command-line parser that automatically generates an elegant user-interface.
  • liftoff - Bootstrapping tool for building command-line app.
  • listr - Terminal task list.

Build tools

  • gulp - Streaming and fast build system that favors code over config.
  • Broccoli - A fast, reliable asset pipeline, supporting constant-time rebuilds and compact build definitions.
  • browserify - Browser-side require() the Node.js way.
  • webpack - Packs modules and assets for the browser.
  • Brunch - Front-end web app build tool with simple declarative config, fast incremental compilation, and an opinionated workflow.
  • strong-build - Build a node app package and prepare to deploy it as a package to production or use git to commit to a deploy branch.
  • grunt - Task runner that can perform repetitive tasks like minification, compilation, unit testing, linting, etc.
  • start - Simple tasks runner powered by composable functions and promise chaining.
  • ygor - A promising task runner for when npm run isn't enough and everything else is too much.
  • Fly - Modern build system based in co-routines, generators and promises.

Hardware

  • johnny-five - Firmata based Arduino Framework.
  • serialport - Access serial ports for reading and writing.
  • usb - USB library.
  • cylon.js - Next generation robotics framework with support for 26 different platforms.
  • i2c-bus - I2C serial bus access.

Templating

  • marko - A fast and lightweight HTML-based templating engine that compiles templates to CommonJS modules and supports streaming, async rendering and custom tags.
  • nunjucks - A powerful templating engine with inheritance, asynchronous control, and more (jinja2 inspired).
  • handlebars.js - A superset of Mustache templates which adds powerful features like helpers and more advanced blocks.
  • hogan.js - Twitter's small, fast, phase-separated compiler for Mustache templates.
  • EJS - Simple unopinionated templating language.
  • Pug - High-performance template engine heavily influenced by Haml.

Web frameworks

  • Koa - A new web framework designed by the team behind Express, which aims to be a smaller, more expressive, and more robust foundation for web applications and APIs.
  • Express - A minimal and flexible web application framework, providing a robust set of features for building single and multi-page, and hybrid web applications.
  • Feathers - A minimal and flexible microservice framework built in the spirit of Express.
  • Hapi - A rich framework for building applications and services.
  • LoopBack - Powerful framework for creating REST APIs and easily connecting to backend data sources.
  • Meteor - An ultra-simple, database-everywhere, data-on-the-wire, pure-Javascript web framework. (You might likeawesome-meteor)
  • SailsJS - An MVC web framework with a modern twist, supporting WebSockets, streams, and a data-driven API.
  • Restify - A node framework built specifically to enable you to build correct REST web services.
  • Interfake - Rapid prototyping framework for making mock HTTP APIs, with a Node.js, command-line and HTTP interface.
  • Derby - MVC framework, making it easy to write realtime, collaborative applications that run in both Node.js and browsers.
  • Restberry - Framework for setting up RESTful JSON APIs, applied to your database models without needing to write any code.
  • Catberry - Framework with Flux architecture, isomorphic web-components, and progressive rendering.
  • ThinkJS - Framework with ES2015+ support, WebSockets, REST API.

Documentation

  • Docco - A quick-and-dirty documentation generator which produces an HTML document that displays your comments intermingled with your code.
  • JSDoc - API documentation generator similar to JavaDoc or PHPDoc.
  • dox - JavaScript documentation generator using Markdown and JSDoc.
  • jsdox - JSDoc3 to Markdown documentation generator.
  • apiDoc - Inline documentation for RESTful web APIs.
  • documentation.js - API documentation generator with support for ES2015+ and flow annotation.
  • YUIDoc - Generates API documentation from comments in source.
  • ESDoc - Documentation generator targeting ES2015, attaching test code and measuring documentation coverage.

Filesystem

  • del - Delete files/folders using globs.
  • globby - Glob files with support for multiple patterns.
  • cpy - Copy files.
  • rimraf - Recursively delete files like rm -rf.
  • mkdirp - Recursively create directories like mkdir -p.
  • graceful-fs - Drop-in replacement for the fs module with various improvements.
  • chokidar - Filesystem watcher which stabilizes events from fs.watch and fs.watchFile as well as using nativefsevents on macOS.
  • find-up - Find a file by walking up parent directories.
  • load-json-file - Read and parse a JSON file.
  • write-json-file - Stringify and write JSON to a file atomically.
  • fs-write-stream-atomic - Like fs.createWriteStream(), but atomic.
  • filenamify - Convert a string to a valid filename.
  • lnfs - Force create symlinks like ln -fs.
  • istextorbinary - Check if a file is text or binary.
  • fs-jetpack - Completely redesigned file system API for convenience in everyday use.
  • fs-extra - Extra methods for the fs module.
  • pkg-dir - Find the root directory of an npm package.
  • sander - Promise-based replacement for the fs module.

Control flow

  • Promises
    • Bluebird - A fully featured promise library with focus on innovative features and performance.
    • pinkie-promise - Promise ponyfill.
    • pify - Promisify a callback-style function.
    • rfpify - Promisify a result-first callback-style function.
    • delay - Delay a promise a specified amount of time.
  • Callbacks
    • each-async - Async concurrent iterator like forEach.
    • async - Provides straight-forward, powerful functions for working with asynchronicity.
    • async-chainable - Chainable, pluggable async functionality.
    • after-all-results - Bundle results of async functions calls into one callback with all the results.
  • Generators
    • co - The ultimate generator based flow-control goodness.
    • suspend - Generator-based control flow that plays nice with callbacks, promises, and thunks.
    • bluebird-co - A set of high performance yield handlers for Bluebird coroutines.
  • Streams
    • Highland.js - Manages synchronous and asynchronous code easily, using nothing more than standard JavaScript and Node-like Streams.
  • Channels
    • js-csp - Communicating sequential processes for JavaScript (like Clojurescript core.async, or Go).
  • Other
    • zone - Provides a way to group and track resources and errors across asynchronous operations.

Streams

  • through2 - Tiny wrapper around streams2 Transform to avoid explicit subclassing noise.
  • from2 - Convenience wrapper for ReadableStream, inspired by through2.
  • get-stream - Get a stream as a string or buffer.
  • concat-stream - Concatenates a stream into strings or binary data.
  • into-stream - Convert a buffer/string/array/object into a stream.
  • duplexify - Turn a writeable and readable stream into a single streams2 duplex stream.
  • pumpify - Combine an array of streams into a single duplex stream.
  • peek-stream - Transform stream that lets you peek the first line before deciding how to parse it.
  • binary-split - A fast newline (or any delimiter) splitter stream.
  • byline - Super-simple line-by-line Stream reader.
  • first-chunk-stream - Transform the first chunk in a stream.
  • pad-stream - Pad each line in a stream.
  • multistream - Combine multiple streams into a single stream.
  • stream-combiner2 - Turn a pipeline into a single stream.
  • readable-stream - Mirror of Streams2 and Streams3 implementations in core.
  • through2-concurrent - Transform object streams concurrently.
  • graphicsmagick-stream - Fast conversion/scaling of images using a pool of long lived GraphicsMagick processes.

Real-time

  • Socket.io - Enables real-time bidirectional event-based communication.
  • SockJS - Low latency, full duplex, cross-domain channel browser-server, with WebSockets or without.
  • Faye - Real-time client-server message bus, based on Bayeux protocol.
  • SocketCluster - Scalable HTTP + WebSocket engine which can run on multiple CPU cores.
  • Primus - An abstraction layer for real-time frameworks to prevent module lock-in.
  • Straw - Real-time dataflow framework.
  • deepstream.io - Scalable real-time microservice framework.
  • Kalm - Modular socket wrapper and optimizer.

Image

  • sharp - The fastest module for resizing JPEG, PNG, WebP and TIFF images.
  • image-type - Detect the image type of a Buffer/Uint8Array.
  • gm - GraphicsMagick and ImageMagick wrapper.
  • lwip - Lightweight image processor which does not require ImageMagick.
  • pica - High quality & fast resize (lanczos3) in pure JS. Alternative to canvas drawImage(), when no pixelation allowed.
  • jimp - Image processing in pure JavaScript.
  • is-progressive - Check if a JPEG image is progressive.
  • probe-image-size - Get the size of most image formats without a full download.

Text

  • Underscore.string - Collection of string manipulation utilities.
  • iconv-lite - Convert character encodings.
  • repeating - Repeat a string.
  • string-length - Get the real length of a string - by correctly counting astral symbols and ignoring ansi escape codes.
  • camelcase - Convert a dash/dot/underscore/space separated string to camelCase: foo-bar → fooBar.
  • escape-string-regexp - Escape RegExp special characters.
  • execall - Find multiple RegExp matches in a string.
  • splice-string - Remove or replace part of a string like Array#splice.
  • indent-string - Indent each line in a string.
  • strip-indent - Strip leading whitespace from every line in a string.
  • detect-indent - Detect the indentation of code.
  • he - A robust HTML entity encoder/decoder.
  • i18n-node - Simple translation module with dynamic JSON storage.
  • babelfish - i18n with very easy syntax for plurals.
  • parse-columns - Parse text columns, like the output of Unix commands.
  • hanging-indent - Format a string into a hanging-indented paragraph.
  • matcher - Simple wildcard matching.

Number

  • random-int - Generate a random integer.
  • random-float - Generate a random float.
  • unique-random - Generate random numbers that are consecutively unique.
  • round-to - Round a number to a specific number of decimal places: 1.234 → 1.2.

Math

Date

  • Moment.js - Parse, validate, manipulate, and display dates.
  • Moment Timezone - IANA Time Zone Database + Moment.js.
  • dateformat - Date formatting.
  • tz-format - Format a date with timezone: 2015-11-30T10:40:35+01:00.

URL

Data validation

  • joi - Object schema description language and validator for JavaScript objects.
  • is-my-json-valid - JSON Schema validator that uses code generation to be extremely fast.
  • property-validator - Easy property validation for Express.
  • schema-inspector - JSON API sanitization and validation.

Parsing

  • remark - Markdown processor powered by plugins.
  • markdown-it - A very fast markdown parser with 100% CommonMark support, extensions and syntax plugins.
  • parse5 - Fast full-featured spec compliant HTML parser.
  • strip-json-comments - Strip comments from JSON.
  • strip-css-comments - Strip comments from CSS.
  • parse-json - Parse JSON with more helpful errors.
  • URI.js - URL mutation.
  • PostCSS - CSS parser / stringifier.
  • JSONStream - Streaming JSON.parse and stringify.
  • csv-parser - Streaming CSV parser that aims to be faster than everyone else.
  • neat-csv - Fast CSV parser. Callback interface for the above.
  • PEG.js - Simple parser generator that produces fast parsers with excellent error reporting.
  • x-ray - A web scraping utility to see through the <html> noise.
  • nearley - Simple, fast, powerful parsing for JavaScript.
  • binary-extract - Extract a value from a buffer of JSON without parsing the whole thing.
  • json-mask - Tiny language and engine for selecting parts of an object, hiding/masking the rest.
  • Stylecow - Parse, manipulate and convert modern CSS to make it compatible with all browsers. Extensible with plugins.
  • js-yaml - Very fast YAML parser.
  • excel-stream - Streaming Excel spreadsheet to JSON parser.
  • xml2js - XML to JavaScript object converter.
  • Jison - Friendly JavaScript parser generator. It shares genes with Bison, Yacc and family.

Humanize

  • pretty-bytes - Convert bytes to a human readable string: 1337 → 1.34 kB.
  • pretty-ms - Convert milliseconds to a human readable string: 1337000000 → 15d 11h 23m 20s.
  • ms - Tiny millisecond conversion utility.
  • pretty-error - Errors with less clutter.
  • humanize - Data formatter for human readability.
  • read-art - Extract readable content from any page.

Compression

  • Archiver - Streaming interface for archive generation, supporting ZIP and TAR.
  • decompress-zip - Unzip.
  • pako - High speed zlib port to pure js (deflate, inflate, gzip).
  • tar-stream - Streaming tar parser and generator. Also see tar-fs.
  • decompress - A pluggable decompression module with support for tartar.gz and zip files out of the box.

Network

  • get-port - Get an available port.
  • ipify - Get your public IP address.
  • getmac - Get the computer MAC address.
  • polo - Zero-config service discovery.

Database

  • Drivers
    • LevelUP - LevelDB.
    • MongoDB - MongoDB driver.
    • PostgreSQL - PostgreSQL client. Pure JavaScript and native libpq bindings.
    • MySQL - MySQL client.
    • Redis - Redis client.
    • nano - CouchDB client.
  • ODM / ORM
    • Bookshelf - ORM for PostgreSQL, MySQL and SQLite3 in the style of Backbone.js.
    • Massive - PostgreSQL data access tool.
    • Mongoose - Elegant MongoDB object modeling.
    • Sequelize - Multi-dialect ORM. Supports PostgreSQL, SQLite, MySQL.
    • Waterline - Datastore-agnostic tool that dramatically simplifies interaction with one or more databases.
    • Iridium - A high performance MongoDB ORM with support for promises, distributed caching, preprocessing, validation and plugins.
    • OpenRecord - ORM for PostgreSQL, MySQL, SQLite3 and RESTful datastores. Similar to ActiveRecord.
    • orm2 - ORM for PostgreSQL, MariaDB, MySQL, Amazon Redshift, SQLite, MongoDB.
    • firenze - Adapter-based ORM for MySQL, Memory, Redis, localStorage and more.
    • pg-promise - PostgreSQL framework for native SQL using promises.
    • Objection.js - Lightweight ORM built on the SQL query builder Knex.
  • Query builder
    • Knex - A query builder for PostgreSQL, MySQL and SQLite3, designed to be flexible, portable, and fun to use.
  • Other
    • NeDB - Embedded persistent database written in JavaScript.

Testing

  • AVA - Futuristic test runner.
  • tap - A TAP test framework.
  • tape - TAP-producing test harness.
  • Mocha - A feature-rich test framework making asynchronous testing simple and fun.
  • power-assert - Provides descriptive assertion messages through the standard assert interface.
  • Mochify - TDD with Browserify, Mocha, PhantomJS and WebDriver.
  • trevor - Run tests against multiple versions of Node.js without switching versions manually or pushing to Travis CI.
  • loadtest - Run load tests for your web application, with an API for automation.
  • istanbul - A code coverage tool that computes statement, line, function and branch coverage with module loader hooks to transparently add coverage when running tests.
  • nyc - Code coverage tool built on istanbul that works with subprocesses.
  • Sinon.JS - Test spies, stubs and mocks.
  • navit - PhantomJS / SlimerJS wrapper to simplify browser test scripting.
  • nock - HTTP mocking and expectations.
  • intern - A next-generation code testing stack for JavaScript.
  • toxy - Hackable HTTP proxy to simulate failure scenarios and network conditions.
  • hook-std - Hook and modify stdout/stderr.
  • testen - Run tests for multiple versions of Node.js locally with NVM.
  • Nightwatch - Automated UI testing framework based on Selenium WebDriver.
  • WebdriverIO - Automated testing based on the WebDriver protocol.

Security

  • snyk - CLI and build-time tool to find & fix vulnerable npm dependencies.
  • nsp - CLI tool to identify known vulnerabilities in your project.
  • RegEx-DoS - CLI tool to identify possible regex denial of service (ReDos) vulnerabilities in your project.

Benchmarking

  • Benchmark.js - A robust benchmarking library that works on nearly all JavaScript platforms, supports high-resolution timers, and returns statistically significant results.
  • matcha - A caffeine-driven, simplistic approach to benchmarking.

Minifiers

Authentication

  • Passport - Simple, unobtrusive authentication.
  • everyauth - Authentication and authorization (password, Facebook, etc) for your Connect and Express apps.
  • passwordless - Token-based authentication middleware for Express allowing authentication without passwords.
  • Lockit - Full featured authentication solution for Express. Supports a variety of databases, predefined routes, email and two-factor authentication.
  • Grant - OAuth middleware for Express, Koa, and Hapi.

Email

  • Nodemailer - The fastest way to handle email.
  • emailjs - Send text/HTML emails with attachments to any SMTP server.

Job queues

  • kue - Priority job queue backed by Redis.
  • bull - Persistent job and message queue.

Node.js management

  • n - Node.js version management.
  • nave - Virtual Environments for Node.js.
  • nodeenv - A Node.js virtual environment compatible to Python's virtualenv.
  • nvm for Windows - Version management for Windows.

Polyfills

Natural language processing

  • retext - An extensible natural language system.
  • franc - Detect the language of text.
  • leven - Measure the difference between two strings using the Levenshtein distance algorithm.
  • natural - A general natural language facility.

Process management

  • PM2 - Advanced Process Manager.
  • node-windows - Run scripts as a native Windows service and log to the Event viewer.
  • node-mac - Run scripts as a native Mac daemon and log to the console app.
  • node-linux - Run scripts as native system service and log to syslog.
  • forever - A simple CLI tool for ensuring that a given script runs continuously (i.e. forever).
  • nodemon - Monitor for changes in your app and automatically restart the server.
  • supervisor - Restart scripts when they crash or restart when a *.js file changes.
  • Phusion Passenger - Friendly process manager that integrates directly into Nginx.
  • naught - Process manager with zero downtime deployment.

Automation

  • robotjs - Desktop Automation: control the mouse, keyboard and read the screen.

AST

  • Acorn - A tiny, fast JavaScript parser.
  • Rocambole - Recursively walk and transform JavaScript AST.

Static site generators

  • Metalsmith - An extremely simple, pluggable static site generator.
  • Wintersmith - Flexible, minimalistic, multi-platform static site generator.
  • Assemble - Static site generator for Node.js, Grunt.js, and Yeoman.
  • DocPad - Static site generator with dynamic abilities and huge plugin ecosystem.

Content management systems

  • KeystoneJS - CMS and web application platform built on Express and MongoDB.
  • Calipso - A simple content management system, built along similar themes to Drupal and Wordpress, that is designed to be fast, flexible and simple.
  • Apostrophe2 - A content management system with an emphasis on intuitive front end content editing and administration built on Express and MongoDB.

Forum

  • nodeBB - A better forum platform for the modern web.

Blogging

  • ghost - Simple, powerful publishing platform that allows you to share your story with the world.
  • Hexo - Fast, simple and powerful blogging framework.

Weird

Miscellaneous

  • execa - A better child_process.
  • cheerio - Fast, flexible, and lean implementation of core jQuery designed specifically for the server.
  • Electron - Build cross platform desktop apps with web technologies. (You might like awesome-electron)
  • opn - Opens stuff like websites, files, executables.
  • hasha - Hashing made simple. Get the hash of a buffer/string/stream/file.
  • dot-prop - Get a property from a nested object using a dot path.
  • onetime - Only run a function once.
  • mem - Memoize functions - an optimization technique used to speed up consecutive function calls by caching the result of calls with identical input.
  • require-uncached - Require a module bypassing the cache.
  • stringify-object - Stringify an object/array like JSON.stringify just without all the double-quotes.
  • strip-bom - Strip UTF-8 byte order mark (BOM) from a string/buffer/stream.
  • deep-assign - Recursive Object.assign().
  • os-locale - Get the system locale.
  • nan - A header file filled with macro and utility goodness for making add-on development for across Node.js versions easier.
  • multiline - Multiline strings in JavaScript.
  • ssh2 - An SSH2 client and server module.
  • adit - SSH tunneling made simple.
  • lazy-req - Require modules lazily.
  • file-type - Detect the file type of a Buffer.
  • Bottleneck - A powerful rate limiter that makes throttling easy.
  • webworker-threads - Lightweight Web Worker API implementation with native threads.
  • node-pre-gyp - Makes it easy to publish and install Node.js C++ addons from binaries.
  • opencv - Bindings for OpenCV. The defacto computer vision library.
  • common-errors - Common error classes and utility functions.
  • agenda - Lightweight job scheduling on MongoDB.
  • dotenv - Load environment variables from .env file.
  • remote-git-tags - Get tags from a remote git repo.
  • semver - semver parser.
  • nar - Create self-contained executable binaries.
  • banshee - Real-time anomalies detection for periodic time series.
  • Faker.js - Generate massive amounts of fake data.
  • nodegit - Native bindings to Git.
  • json-strictify - Safely serialize a value to JSON without data loss or going into an infinite loop.
  • parent-module - Get the path of the parent module.
  • resolve-from - Resolve the path of a module like require.resolve() but from a given path.
  • simplecrawler - Event driven web crawler.
  • jsdom - JavaScript implementation of HTML and the DOM.
  • hypernova - A service for server-side rendering your JavaScript views.

Resources

Tutorials

  • Nodeschool - Learn Node.js with interactive lessons.
  • The Art of Node - An introduction to Node.js.
  • stream-handbook - How to write Node.js programs with streams.
  • browserify-handbook - The definitive guide for browserify.
  • module-best-practices - Some good practices when writing new npm modules.
  • The Node Way — An entire philosophy of Node.js best practices and guiding principles exists for writing maintainable modules, scalable applications, and code that is actually pleasant to read.
  • You Don't Know Node.js - Introduction to Node.js core features and asynchronous JavaScript.

Discovery

  • npms - Superb package search with deep analysis of package quality using a myriad of metrics.
  • node-modules.com - An alternative npm search engine with a more intelligent and personal results ranking.
  • npm addict - Your daily injection of npm packages.
  • npmcompare.com - Compare and discover npm packages.

Articles

Newsletters

  • node weekly - Weekly e-mail round-up of Node.js news and articles.
  • nmotw - Node Module Of The Week, weekly dose of hand picked node modules.

Videos

Podcasts

Books

Blogs

  • Node.js blog
  • HowToNode - Teaching how to do various tasks in Node.js as well as teach fundamental concepts that are needed to write effective code.
  • webapplog.com — Blog posts on Node.js and JavaScript from the author of Practical Node.js and Pro Express.js Azat Mardan.

Courses

Cheatsheets

  • Express.js
  • Stream FAQs - Answering common questions about streams, covering pagination, events, and more.

Tools

  • GitHub Linker - Chrome extension that linkifies dependencies in package.json, .js, .jsx, .coffee and .md files on GitHub.
  • npm-hub - Chrome extension to display npm dependencies at the bottom of a repo's readme.
  • RequireBin - Shareable JavaScript programs powered by npm and browserify.
  • Tonic - Embed a Node.js environment on any website.

Community

Miscellaneous

from https://github.com/sindresorhus/awesome-nodejs