Node.js
repo: sindresorhus/awesome-nodejs
category: Platforms
related: JavaScript · React · Next.js · Docker
Contents
- Official
- Packages
- Mad science
- Command-line apps
- Functional programming
- HTTP
- Debugging / Profiling
- Logging
- Command-line utilities
- Build tools
- Hardware
- Templating
- Web frameworks
- Documentation
- Filesystem
- Control flow
- Streams
- Real-time
- Image
- Text
- Number
- Math
- Date
- URL
- Data validation
- Parsing
- Humanize
- Compression
- Network
- Database
- Testing
- Security
- Benchmarking
- Minifiers
- Authentication
- Authorization
- Job queues
- Node.js management
- Cross-platform integration
- Natural language processing
- Process management
- Automation
- AST
- Static site generators
- Content management systems
- Forum
- Blogging
- Weird
- Serialization
- Miscellaneous
- Package Manager
- Resources
- Related lists
Official
Packages
Mad science
- webtorrent - Streaming torrent client for Node.js and the browser.
- peerflix - Streaming torrent client.
- 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 - 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.
- NodeOS - The first operating system powered by npm.
- YodaOS - AI operating system.
- Brain.js - Machine-learning framework.
- Pipcook - Front-end algorithm framework to create a machine learning pipeline.
- Cytoscape.js - Graph theory (a.k.a. network) modeling and analysis.
- js-git - JavaScript implementation of Git.
- xlsx - Pure JS Excel spreadsheet reader and writer.
- isomorphic-git - Pure JavaScript implementation of Git.
Command-line apps
- np - Better
npm publish. - npm-name - Check a package name's availability on npm.
- gh-home - Open the GitHub page of the repo in the current directory.
- npm-home - Open the npm page of a package.
- trash - Safer alternative to
rm. - speed-test - Test your internet connection speed and ping.
- pageres - Capture website screenshots.
- cpy - Copy files.
- vtop - More better top, with nice charts.
- 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.
- clipboard-cli - Copy & paste on the terminal.
- XO - Enforce strict code style using the JavaScript happiness style.
- ESLint - The pluggable linting utility for JavaScript.
- David - Tells you when your package npm dependencies are out of date.
- http-server - Simple, zero-config command-line HTTP server.
- Live Server - Development HTTP-server with livereload capability.
- bcat - Pipe command output to web browsers.
- normit - Google Translate with speech synthesis in your terminal.
- fkill - Fabulously kill processes. Cross-platform.
- 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.
- tmpin - Adds stdin support to any CLI app that accepts file input.
- wallpaper - Change the desktop wallpaper.
- pen - Live Markdown preview in the browser from your favorite editor.
- dark-mode - Toggle the macOS Dark Mode.
- Jsome - Pretty prints JSON with configurable colors and indentation.
- mobicon - Mobile app icon generator.
- mobisplash - Mobile app splash screen generator.
- diff2html-cli - Pretty git diff to HTML generator.
- trymodule - Try out npm packages in the terminal.
- jscpd - Copy/paste detector for source code.
- atmo - Server-side API mocking.
- auto-install - Auto installs dependencies as you code.
- cost-of-modules - Find out which dependencies are slowing you down.
- localtunnel - Expose your localhost to the world.
- svg-term-cli - Share terminal sessions via SVG.
- gtop - System monitoring dashboard for the terminal.
- themer - Generate themes for your editor, terminal, wallpaper, Slack, and more.
- carbon-now-cli - Beautiful images of your code — from right inside your terminal.
- cash-cli - Convert between 170 currencies.
- taskbook - Tasks, boards & notes for the command-line habitat.
- discharge - Easily deploy static websites to Amazon S3.
- npkill - Easily find and remove old and heavy node_modules folders.
Functional programming
- lodash - Utility library delivering consistency, customization, performance, & extras. A better and faster Underscore.js.
- immutable - Immutable data collections.
- Ramda - Utility library with a focus on flexible functional composition enabled by automatic currying and reversed argument order. Avoids mutating data.
- 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.
- RxJS - Functional reactive library for transforming, composing, and querying various kinds of data.
- Kefir.js - Reactive library with focus on high performance and low memory usage.
HTTP
- got - Nicer interface to the built-in
httpmodule. - undici - High performance HTTP client written from scratch with zero dependencies.
- ky-universal - Universal HTTP client based on Fetch.
- node-fetch -
window.fetchfor Node.js. - axios - Promise based HTTP client (works in the browser too).
- superagent - HTTP request library.
- http-fake-backend - Build a fake backend by providing the content of JSON files or JavaScript objects through configurable routes.
- cacheable-request - Wrap native HTTP requests with RFC compliant cache support.
- gotql - GraphQL request library built on got.
- global-agent - Global HTTP/HTTPS proxy agent that is configurable using environment variables.
- smoke - File-based HTTP mock server with recording abilities.
- purest - REST client.
Debugging / Profiling
- debug - Tiny debugging utility.
- 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.
- locus - Starts a REPL at runtime that has access to all variables.
- 0x - Flamegraph profiling.
- ctrace - Well-formatted and improved trace system calls and signals.
- leakage - Write memory leak tests.
- llnode - Post-mortem analysis tool which allows you to inspect objects and get insights from a crashed Node.js process.
- thetool - Capture different CPU, memory, and other profiles for your app in Chrome DevTools friendly format.
- swagger-stats - Trace API calls and monitor API performance, health, and usage metrics.
- NiM - Manages DevTools debugging workflow.
- dats - Minimalistic and zero-dependencies StatsD client.
Logging
- pino - Extremely fast logger inspired by Bunyan.
- winston - Multi-transport async logging library.
- 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.
- consola - Console logger.
Command-line utilities
- chalk - Terminal string styling done right.
- meow - CLI app helper.
- yargs - Command-line parser that automatically generates an elegant user-interface.
- ora - Elegant terminal spinner.
- get-stdin - Easier stdin.
- log-update - Log by overwriting the previous output in the terminal. Useful for rendering progress bars, animations, etc.
- Ink - React for interactive command-line apps.
- listr2 - Terminal task list.
- conf - Simple config handling for your app or module.
- ansi-escapes - ANSI escape codes for manipulating the terminal.
- log-symbols - Colored symbols for various log levels.
- figures - Unicode symbols with Windows CMD fallbacks.
- boxen - Create boxes in the terminal.
- terminal-link - Create clickable links in the terminal.
- terminal-image - Display images in the terminal.
- string-width - Get the visual width of a string - the number of columns required to display it.
- cli-truncate - Truncate a string to a specific width in the terminal.
- blessed - Curses-like library.
- Inquirer.js - Interactive command-line prompt.
- yn - Parse yes/no like values.
- cli-table3 - Pretty unicode tables.
- drawille - Draw on the terminal with unicode braille characters.
- ascii-charts - ASCII bar chart in the terminal.
- progress - Flexible ascii progress bar.
- insight - Helps you understand how your tool is being used by anonymously reporting usage metrics to Google Analytics.
- cli-cursor - Toggle the CLI cursor.
- 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.
- sudo-block - Block users from running your app with root permissions.
- sparkly - Generate sparklines
▁▂▃▅▂▇. - Bit - Create, maintain, find and use small modules and components across repositories.
- gradient-string - Beautiful color gradients in terminal output.
- oclif - CLI framework complete with parser, automatic documentation, testing, and plugins.
- terminal-size - Reliably get the terminal window size.
- Cliffy - Framework for interactive CLIs.
- zx - Write shell scripts in JavaScript.
Build tools
- parcel - Blazing fast, zero config web app bundler.
- webpack - Packs modules and assets for the browser.
- rollup - Next-generation ES2015 module bundler.
- gulp - Streaming and fast build system that favors code over config.
- Broccoli - Fast, reliable asset pipeline, supporting constant-time rebuilds and compact build definitions.
- Brunch - Front-end web app build tool with simple declarative config, fast incremental compilation, and an opinionated workflow.
- FuseBox - Fast build system that combines the power of webpack, JSPM and SystemJS, with first-class TypeScript support.
- pkg - Package your Node.js project into an executable.
- Vite - Front-end build tool with hot module replacement and static asset bundling.
Hardware
- johnny-five - Firmata based Arduino Framework.
- serialport - Access serial ports for reading and writing.
- usb - USB library.
- i2c-bus - I2C serial bus access.
- onoff - GPIO access and interrupt detection.
- spi-device - SPI serial bus access.
- pigpio - Fast GPIO, PWM, servo control, state change notification, and interrupt handling on the Raspberry Pi.
- gps - NMEA parser for handling GPS receivers.
- modbus-serial - A pure JavaScript implementation of MODBUS-RTU (serial and TCP).
Templating
- marko - HTML-based templating engine that compiles templates to CommonJS modules and supports streaming, async rendering and custom tags.
- nunjucks - Templating engine with inheritance, asynchronous control, and more (jinja2 inspired).
- handlebars.js - Superset of Mustache templates which adds powerful features like helpers and more advanced blocks.
- EJS - Simple unopinionated templating language.
- Pug - High-performance template engine heavily influenced by Haml.
Web frameworks
- Fastify - Fast and low overhead web framework.
- Next.js - Minimalistic framework for server-rendered universal JavaScript web apps.
- Nuxt.js - Minimalistic framework for server-rendered Vue.js apps.
- Hapi - Framework for building applications and services.
- Micro - Minimalistic microservice framework with an async approach.
- Koa - 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 - Web application framework, providing a robust set of features for building single and multi-page, and hybrid web applications.
- Feathers - Microservice framework built in the spirit of Express.
- 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 like awesome-meteor)
- Restify - Enables you to build correct REST web services.
- ThinkJS - Framework with ES2015+ support, WebSockets, REST API.
- ActionHero - Framework for making reusable & scalable APIs for TCP sockets, WebSockets, and HTTP clients.
- seneca - Toolkit for writing microservices.
- AdonisJs - A true MVC framework for Node.js built on solid foundations of Dependency Injection and IoC container.
- Moleculer - Fast & powerful microservices framework.
- Nest - Angular-inspired framework for building efficient and scalable server-side apps.
- TypeGraphQL - Modern framework for creating GraphQL APIs with TypeScript, using classes and decorators.
- Tinyhttp - Modern and fast Express-like web framework.
- Marble.js - Functional reactive framework for building server-side apps, based on TypeScript and RxJS.
- Lad - Framework made by a former Express TC and Koa member that bundles web, API, job, and proxy servers.
- Ts.ED - Intuitive TypeScript framework for building server-side apps on top of Express.js or Koa.js.
- Hono - Small and fast web framework.
Documentation
- documentation.js - API documentation generator with support for ES2015+ and flow annotation.
- Docco - Documentation generator which produces an HTML document that displays your comments intermingled with your code.
- JSDoc - API documentation generator similar to JavaDoc or PHPDoc.
- Docusaurus - Documentation website generator that leverages React and Markdown, and comes with translation and versioning features.
Filesystem
- del - Delete files/folders using globs.
- globby - Glob files with support for multiple patterns.
- chokidar - Filesystem watcher which stabilizes events from
fs.watchandfs.watchFileas well as using nativefseventson macOS. - find-up - Find a file by walking up parent directories.
- proper-lockfile - Inter-process and inter-machine lockfile utility.
- [load-json-file](https://github.com/sindresorhus/load-json-file) - Read and parse a JSON file.
- [write-json-file](https://github.com/sindresorhus/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.
- 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
fsmodule. - package-directory - Find the root directory of an npm package.
- filehound - Flexible and fluent interface for searching the file system.
- move-file - Move a file, even works across devices.
- tempy - Get a random temporary file or directory path.
Control flow
- Promises
- Observables
- RxJS - Reactive programming.
- observable-to-promise - Convert an Observable to a Promise.
- More…
- Streams
- Highland.js - Manages synchronous and asynchronous code easily, using nothing more than standard JavaScript and Node-like Streams.
Streams
- get-stream - Get a stream as a string or buffer.
- from2 - Convenience wrapper for ReadableStream, inspired by
through2. - 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 - 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.
- readable-stream - Mirror of Streams2 and Streams3 implementations in core.
- through2-concurrent - Transform object streams concurrently.
Real-time
- µWebSockets - Highly scalable WebSocket server & client library.
- Socket.io - Enables real-time bidirectional event-based communication.
- 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.
- deepstream.io - Scalable real-time microservice framework.
- Kalm - Low-level socket router and middleware framework.
- MQTT.js - Client for MQTT - Pub-sub based messaging protocol for use on top of TCP/IP.
- rpc-websockets - JSON-RPC 2.0 implementation over WebSockets.
- Aedes - Barebone MQTT server that can run on any stream server.
Image
- sharp - The fastest module for resizing JPEG, PNG, WebP and TIFF images.
- image-type - Detect the type of an image.
- image-dimensions - Get the dimensions of an image.
- 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.
- qrcode - QR code and bar code generator.
- ImageScript - Image processing in JavaScript, utilizing WebAssembly for performance.
Text
- iconv-lite - Convert character encodings.
- 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.
- 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 - HTML entity encoder/decoder.
- i18n-node - Simple translation module with dynamic JSON storage.
- babelfish - i18n with very easy syntax for plurals.
- matcher - Simple wildcard matching.
- unhomoglyph - Normalize visually similar unicode characters.
- i18next - Internationalization framework.
- nanoid - Tiny, secure, URL-friendly, unique string ID generator.
- StegCloak - Conceal secrets within strings, in plain sight.
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
- ndarray - Multidimensional arrays.
- mathjs - An extensive math library.
- math-clamp - Clamp a number.
- algebra - Algebraic structures.
- multimath - Core to create fast image math in WebAssembly and JS.
Date
- Luxon - Library for working with dates and times.
- date-fns - Modern date utility.
- Day.js - Immutable date library alternative to Moment.js.
- dateformat - Date formatting.
- tz-format - Format a date with timezone:
2015-11-30T10:40:35+01:00. - cctz - Fast parsing, formatting, and timezone conversion for dates.
URL
- normalize-url - Normalize a URL.
- humanize-url - Humanize a URL: https://sindresorhus.com → sindresorhus.com.
- url-unshort - Expand shortened URLs.
- speakingurl - Generate a slug from a string with transliteration.
- linkify-it - Link patterns detector with full unicode support.
- url-pattern - Easier than regex string matching patterns for URLs and other strings.
- embedza - Create HTML snippets/embeds from URLs using info from oEmbed, Open Graph, meta tags.
Data validation
- joi - Object schema description language and validator for JavaScript objects.
- [is-my-json-valid](https://github.com/mafintosh/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.
- ajv - The fastest JSON Schema validator. Supports v5, v6 and v7 proposals.
- Superstruct - Simple and composable way to validate data in JavaScript (and TypeScript).
- yup - Object schema validation.
- zod - TypeScript-first schema validation with static type inference.
Parsing
- remark - Markdown processor powered by plugins.
- markdown-it - Markdown parser with 100% CommonMark support, extensions and syntax plugins.
- parse5 - Fast full-featured spec compliant HTML parser.
- @parcel/css - A CSS parser, transformer, and minifier written in Rust.
- [strip-json-comments](https://github.com/sindresorhus/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.
- JSONStream - Streaming JSON.parse and stringify.
- neat-csv - Fast CSV parser. Callback interface for the above.
- csv-parser - Streaming CSV parser that aims to be faster than everyone else.
- PEG.js - Simple parser generator that produces fast parsers with excellent error reporting.
- x-ray - Web scraping utility.
- nearley - Simple, fast, powerful parsing for JavaScript.
- binary-extract - Extract a value from a buffer of JSON without parsing the whole thing.
- Stylecow - Parse, manipulate and convert modern CSS to make it compatible with all browsers. Extensible with plugins.
- js-yaml - Very fast YAML parser.
- xml2js - XML to JavaScript object converter.
- Jison - Friendly JavaScript parser generator. It shares genes with Bison, Yacc and family.
- google-libphonenumber - Parse, format, store and validate phone numbers.
- ref - Read/write structured binary data in Buffers.
- xlsx-populate - Read/write Excel XLSX.
- Chevrotain - Very fast and feature rich parser building toolkit for JavaScript.
- fast-xml-parser - Validate and parse XML.
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.
- read-art - Extract readable content from any page.
Compression
- yazl - Zip.
- yauzl - Unzip.
- Archiver - Streaming interface for archive generation, supporting ZIP and TAR.
- pako - High speed zlib port to pure js (deflate, inflate, gzip).
- tar-stream - Streaming tar parser and generator. Also see tar-fs.
Network
- get-port - Get an available port.
- ipify - Get your public IP address.
- getmac - Get the computer MAC address.
- DHCP - DHCP client and server.
- netcat - Netcat port in pure JS.
Database
- Drivers
- PostgreSQL - PostgreSQL client. Pure JavaScript and native libpq bindings.
truncated — full list on GitHub