Node.js, an open-source runtime, is a game-changer in the world of web development. It allows developers to use JavaScript not only for front-end but also for back-end server-side scripting and the creation of command-line tools. Node.js is lauded for its versatility, performance, and vast ecosystem, making it a go-to choice for building a wide range of applications.
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.
- wifi-password – Get the current wifi password.
- 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.
- lessmd – Markdown in the terminal.
- 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
http
module. - undici – High performance HTTP client written from scratch with zero dependencies.
- ky-universal – Universal HTTP client based on Fetch.
- node-fetch –
window.fetch
for 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.
listr – 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.
term-size – Reliably get the terminal window size.
Cliffy – Framework for interactive CLIs.
zx – Write shell scripts 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 – Intituive TypeScript framework for building server-side apps on top of Express.js or Koa.js.
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.
- cpy – Copy files.
- chokidar – Filesystem watcher which stabilizes events from
fs.watch
andfs.watchFile
as well as using nativefsevents
on macOS. - find-up – Find a file by walking up parent directories.
- proper-lockfile – Inter-process and inter-machine lockfile utility.
- 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.
- 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 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.
- probe-image-size – Get the size of most image formats without a full download.
- 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 conversation 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 – 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.
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 – 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.
- decompress – Decompression module with support for
tar
,tar.gz
andzip
files out of the box.
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.
- Redis – Redis client.
- LevelUP – LevelDB.
- MySQL – MySQL client.
- couchdb-nano – CouchDB client.
- Aerospike – Aerospike client.
- Couchbase – Couchbase client.
- MongoDB – MongoDB driver.
- ODM / ORM
- Sequelize – Multi-dialect ORM. Supports PostgreSQL, SQLite, MySQL, and more.
- Bookshelf – ORM for PostgreSQL, MySQL and SQLite3 in the style of Backbone.js.
- Mongoose – Elegant MongoDB object modeling.
- Waterline – Datastore-agnostic tool that dramatically simplifies interaction with one or more databases.
- OpenRecord – ORM for PostgreSQL, MySQL, SQLite3 and RESTful datastores. Similar to ActiveRecord.
- pg-promise – PostgreSQL framework for native SQL using promises.
- slonik – PostgreSQL client with strict types, detailed logging and assertions.
- Objection.js – Lightweight ORM built on the SQL query builder Knex.
- TypeORM – ORM for PostgreSQL, MariaDB, MySQL, SQLite, and more.
- MikroORM – TypeScript ORM based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, PostgreSQL, MySQL and SQLite.
- Prisma – Modern database access (ORM alternative). Auto-generated and type-safe query builder in TypeScript. Supports PostgreSQL, MySQL & SQLite.
- Query builder
- Knex – Query builder for PostgreSQL, MySQL and SQLite3, designed to be flexible, portable, and fun to use.
- Other
- NeDB – Embedded persistent database written in JavaScript.
- Lowdb – Small JavaScript database powered by Lodash.
- Keyv – Simple key-value storage with support for multiple backends.
- Finale – RESTful endpoint generator for your Sequelize models.
- database-js – Wrapper for multiple databases with a JDBC-like connection.
- Mongo Seeding – Populate MongoDB databases with JavaScript and JSON files.
- @databases – Query PostgreSQL, MySQL and SQLite3 with plain SQL without risking SQL injection.
- pg-mem – In-memory PostgreSQL instance for your tests.
Testing
- AVA – Futuristic test runner.
- Mocha – Feature-rich test framework making asynchronous testing simple and fun.
- nyc – Code coverage tool built on istanbul that works with subprocesses.
- tap – TAP test framework.
- tape – TAP-producing test harness.
- 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.
- Sinon.JS – Test spies, stubs and mocks.
- navit – PhantomJS / SlimerJS wrapper to simplify browser test scripting.
- Nock – HTTP mocking and expectations.
- intern – Code testing stack.
- 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.
- Jest – Painless JavaScript testing.
- TestCafe – Automated browser testing.
- abstruse – Continuous Integration server.
- CodeceptJS – End-to-end testing.
- Puppeteer – Headless Chrome.
- Playwright – Headless Chromium, WebKit, and Firefox with a single API.
- nve – Run any command on multiple versions of Node.js locally.
- axe-core – Accessibility engine for automated Web UI testing.
- testcontainers-node – Provides lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
Security
- upash – Unified API for all password hashing algorithms.
- themis – Multilanguage framework for making typical encryption schemes easy to use: data at rest, authenticated data exchange, transport protection, authentication, and so on.
- GuardRails – GitHub app that provides security feedback in pull requests.
- rate-limiter-flexible – Brute-force and DDoS attack protection.
- crypto-hash – Async non-blocking hashing.
- jose-simple – Encryption and decryption of data using the JOSE (JSON Object Signing and Encryption) standard.
Benchmarking
- Benchmark.js – Benchmarking library that supports high-resolution timers and returns statistically significant results.
Minifiers
- babel-minify – ES2015+ aware minifier based on the Babel toolchain.
- UglifyJS2 – JavaScript minifier.
- clean-css – CSS minifier.
- minimize – HTML minifier.
- imagemin – Image minifier.
Authentication
- Passport – Simple, unobtrusive authentication.
- Grant – OAuth providers for Express, Koa, Hapi, Fastify, AWS Lambda, Azure, Google Cloud, Vercel, and many more.
Authorization
- CASL – Isomorphic authorization for UI and API.
- node-casbin – Authorization library that supports access control models like ACL, RBAC and ABAC.
- Nodemailer – The fastest way to handle email.
- emailjs – Send text/HTML emails with attachments to any SMTP server.
- email-templates – Create, preview, and send custom email templates.
- MJML – Markup language designed to reduce the pain of creating responsive emails.
Job queues
- bull – Persistent job and message queue.
- agenda – MongoDB-backed job scheduling.
- idoit – Redis-backed job queue engine with advanced job control.
- node-resque – Redis-backed job queue.
- rsmq – Redis-backed message queue.
- bee-queue – High-performance Redis-backed job queue.
- RedisSMQ – Simple high-performance Redis message queue with real-time monitoring.
- sqs-consumer – Build Amazon Simple Queue Service (SQS) based apps without the boilerplate.
- better-queue – Simple and efficient job queue when you cannot use Redis.
- bullmq – Persistent job and message queue.
Node.js management
- n – Node.js version management.
- nave – Virtual Environments for Node.js.
- nodeenv – Node.js virtual environment compatible to Python’s virtualenv.
- nvm for Windows – Version management for Windows.
- nodenv – Version manager that is similar to Ruby’s rbenv. It supports auto version switching.
- fnm – Cross-platform Node.js version manager built in Rust.
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 – Natural language facility.
- nlp.js – Building bots, with entity extraction, sentiment analysis, automatic language identify, and more.
Process management
- PM2 – Advanced Process Manager.
- nodemon – Monitor for changes in your app and automatically restart the server.
- 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.
- node-windows – Run scripts as a native Windows service and log to the Event viewer.
- supervisor – Restart scripts when they crash or restart when a
*.js
file changes. - Phusion Passenger – Friendly process manager that integrates directly into Nginx.
Automation
- robotjs – Desktop Automation: control the mouse, keyboard and read the screen.
- nut.js – Cross-platform native GUI automation / testing framework with image matching capabilities which integrates with Jest.
AST
- Acorn – Tiny, fast JavaScript parser.
- babel-parser – JavaScript parser used in Babel.
Static site generators
- DocPad – Static site generator with dynamic abilities and huge plugin ecosystem.
- docsify – Markdown documentation site generator with no statically built HTML files.
- Charge – Opinionated, zero-config static site generator using JSX and MDX.
Content management systems
- KeystoneJS – CMS and web application platform built on Express and MongoDB.
- ApostropheCMS – Content management system with an emphasis on intuitive front end content editing and administration built on Express and MongoDB.
- Strapi – Content Management Framework (headless-CMS) to build powerful APIs.
- Factor – Vue.js dashboard framework and headless CMS.
- AdminBro – Auto-generated admin panel with CRUD for all your resources.
Forum
- nodeBB – Forum platform for the modern web.
Blogging
Weird
- cows – ASCII cows.
- superb – Get superb like words.
- cat-names – Get popular cat names.
- dog-names – Get popular dog names.
- superheroes – Get superhero names.
- supervillains – Get supervillain names.
- cool-ascii-faces – Get some cool ascii faces.
- cat-ascii-faces –
₍˄·͈༝·͈˄₎◞ ̑̑ෆ⃛ (=ↀωↀ=)✧ (^・o・^)ノ”
. - nerds – Get data from nerdy topics like Harry Potter, Star Wars, and Pokémon.
Serialization
- snappy – Native bindings for Google’s Snappy compression library.
- protobuf – Implementation of Protocol Buffers.
- compactr – Implementation of the Compactr protocol.
Miscellaneous
- execa – Better
child_process
. - cheerio – Fast, flexible, and lean implementation of core jQuery designed specifically for the server.
- open – 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.
- strip-bom – Strip UTF-8 byte order mark (BOM) from a string/buffer/stream.
- os-locale – Get the system locale.
- ssh2 – SSH2 client and server module.
- adit – SSH tunneling made simple.
- file-type – Detect the file type of a Buffer.
- Bottleneck – Rate limiter that makes throttling easy.
- ow – Function argument validation for humans.
- webworker-threads – Lightweight Web Worker API implementation with native threads.
- clipboardy – Access the system clipboard (copy/paste).
- 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.
- dotenv – Load environment variables from .env file.
- semver – Semantic version parser.
- nodegit – Native bindings to Git.
- json-strictify – Safely serialize a value to JSON without data loss or going into an infinite loop.
- jsdom – JavaScript implementation of HTML and the DOM.
- @sindresorhus/is – Type check values.
- env-dot-prop – Get, set, or delete nested properties of process.env using a dot path.
- emittery – Simple and modern async event emitter.
- node-video-lib – Pure JavaScript library for working with MP4 and FLV video files and creating MPEG-TS chunks for HLS streaming.
- basic-ftp – FTP/FTPS client.
- cashify – Currency conversion.
- genepi – Automatically generate a native Node.js addon from C++ code.
- husky – Create Git hook scripts.
- patch-package – Make and preserve fixes to npm dependencies.
- editly – Declarative video editing API.
- wild-wild-path – Object property paths with wildcards and regexes.
Package Manager
- npm – The default package manager.
- pnpm – Disk space efficient package manager.
- yarn – Alternative package manager.
Resources
Tutorials
- Node.js Best Practices – Summary and curation of the top-ranked content on Node.js best practices, available in multiple languages.
- Nodeschool – Learn Node.js with interactive lessons.
- The Art of Node – An introduction to Node.js.
- 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.
- Portable Node.js guide – Practical guide on how to write portable/cross-platform Node.js code.
- Build a real web app with no frameworks – A set of video tutorials/livestreams to help you build and deploy a real, live web app using a handful of simple libraries and the core Node.js modules.
Discovery
- npms – Superb package search with deep analysis of package quality using a myriad of metrics.
- npm addict – Your daily injection of npm packages.
- npmcompare.com – Compare and discover npm packages.
Articles
- Error Handling in Node.js
- Teach Yourself Node.js in 10 Steps
- Mastering the filesystem in Node.js
- Semver: A Primer
- Semver: Tilde and Caret
- Why Asynchronous?
- Understanding the Node.js Event Loop
- Understanding Object Streams
- Using Express to Quickly Build a GraphQL Server
Newsletters
- Node Weekly – Weekly e-mail round-up of Node.js news and articles.
Videos
- Introduction to Node.js with Ryan Dahl
- Hands on with Node.js
- V8 Garbage Collector – Trash talk about the V8 garbage collector.
- 10 Things I Regret About Node.js by Ryan Dahl – Insightful talk by the creator of Node.js about some of its limitions.
- Mastering REST APIs in Node.js: Zero-To-Hero – Video course on how to make REST APIs using Node.js.
- Make a vanilla Node.js REST API – Building a REST API without using a framework like Express.
- Google I/O 2009 – V8: High Performance JavaScript Engine – The basics of V8 architecture and how it optimizes JavaScript execution.
- Google I/O 2012 – Breaking the JavaScript Speed Limit with V8 – How V8 optimizes JavaScript execution.
- Google I/O 2013 – Accelerating Oz with V8: Follow the Yellow Brick Road to JavaScript Performance – How to detect app bottlenecks and optimize performance with V8 knowledge.
- Node.js Internal Architecture | Ignition, Turbofan, Libuv – How Node.js works internally, with a focus on V8 and libuv.
- Introduction to libuv: What’s a Unicorn Velociraptor? –
libuv
architecture, thread pool, and event loop, with its source code. - libuv Cross platform asynchronous i/o –
libuv
architecture in detail, such as where it’s actually using threads. - You Don’t Know Node – ForwardJS San Francisco – Explaining Node.js internals with quizzes about V8, libuv, event loop, module, stream, and cluster.
Books
- Node.js in Action
- Node.js in Practice
- Mastering Node
- Node.js 8 the Right Way
- Professional Node.js: Building JavaScript Based Scalable Software
- Secure Your Node.js Web Application
- Express in Action
- Practical Modern JavaScript
- Mastering Modular JavaScript
- Get Programming with Node.js
- Node.js Cookbook
- Node.js Design Patterns
Blogs
- Node.js blog
- webapplog.com – Blog posts on Node.js and JavaScript from the author of Practical Node.js and Pro Express.js Azat Mardan.
Courses
- Learn to build apps and APIs with Node.js – Video course by Wes Bos.
- Real Time Web with Node.js
- Learn and Understand Node.js
- Node.js Full Stack Developer Course
Cheatsheets
- Express.js
- Stream FAQs – Answering common questions about streams, covering pagination, events, and more.
- Strong Node.js – Checklist for source code security analysis of a Node.js web service.
Tools
- OctoLinker – 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.
- RunKit – Embed a Node.js environment on any website.
- github-npm-stats – Chrome extension that displays npm download stats on GitHub.
- npm semver calculator – Visually explore what versions of a package a semver range matches.
- CodeSandbox – Online IDE and prototyping.
- Amplication – Auto-generates fully functional apps.
- RunJS – Desktop JavaScript playground.
Community
Miscellaneous
- nodebots – Robots powered by JavaScript.
- node-module-boilerplate – Boilerplate to kickstart creating a node module.
- modern-node – Toolkit for creating node modules with Jest, Prettier, ESLint, and Standard.
- generator-nm – Scaffold out a node module.
- Microsoft Node.js Guidelines – Tips, tricks, and resources for working with Node.js on Microsoft platforms.
- Module Requests & Ideas – Request a JavaScript module you wish existed or get ideas for modules.
- v8-perf – Notes and resources related to V8 and thus Node.js performance.
Related lists
- awesome-npm – Resources and tips for using npm.
- awesome-cross-platform-nodejs – Resources for writing and testing cross-platform code.