Modules
Resources
- mattdesl/modules — @mattdesl's large list of modules
- ferros/mad-science-modules — delightful npm packages that make you say wow
- mafintosh — probably contains a solution for your problems
- ndarray/wiki/ndarray-module-list — ndarray related goodies
- ndarray/tutorial
- stack.gl/packages — modular graphics packages
- Raynos/http-framework/wiki/Modules — modular http server
- maxogden/maintainance-modules — list of modules that are useful for module dev
- meandavejustice/web-audio-modules
- bebraw/jswiki/physics_libraries
- virtual-dom/modules
- livejs
- livejs/ndpixels
- remark/plugins
Graphics
- a-big-triangle — Draws a big triangle onto the screen
- gl-geometry — A flexible wrapper to set up renderable WebGL geometries
- gl-shader — WebGL shader wrapper
- ndarray — Multidimensional arrays for JavaScript
- gl-particles — Convenience module for FBO-driven particle simulations
- gl-fbo — WebGL framebuffer wrapper
- gl-vec3 — gl-matrix's vec3, split into smaller pieces
- perspective-camera — a high-level 3D perspective camera
- icosphere — Generates icosphere meshes of varying levels of complexity
- tweenr - Minimal tweening engine which operates on numbers and arrays
- color-convert - Plain color conversion functions
Data viz
- d3-hierarchy - d3 data viz algorithms
Crypto
- sodium — Port of the lib sodium encryption library to Node.js
Audio
- gl-audio-analyzer — Pull audio waveform/frequency data into WebGL for realtime audio visualisation
- soundcloud-badge — A SoundCloud 'now-playing' badge you can just drop into browserify demos
- audio-clock — keep time for audio apps
- read-audio — Read raw audio input as a stream of ndsamples
- ndsamples — ndsamples are ndarrays in a format for audio
- audio-rms — Connect a Web Audio API AudioNode and stream out the realtime RMS audio level
- node-audio-rms — stream real-time RMS from ndarrays of audio samples
- freeverb — A Web Audio implementation of freeverb (Schroeder Reverberator)
- wave-recorder — Record WAVE files using Web Audio API and persist with Web FileSystem API
- tap-tempo — Estimates BPM from tap events
- midi-qwerty-keys — Use qwerty keyboard as midi keyboard in the browser
- bopper — Streaming clock source for scheduling Web Audio events rhythmically
- ditty — Schedule playback for a loop sequence of Web Audio events using bopper
- audio-slot — Web Audio API FRP wrapper for creating, routing, and triggering AudioNodes
- loop-drop-app — MIDI looper, modular synth and sampler app
- soundbank — A collection of triggerable Web Audio API audio slots
- bitcrush — Bitcrush effect for Web Audio API
- meyda - Real-time Audio Feature Extraction for the Web Audio API
- web-audio-player - cross-browser WebAudio player
Video
- canvid — play video on canvas elements (without audio)
- mp4-stream - Streaming mp4 encoder and decoder
- mediasource - media source api as a writable stream
Tools
- standard — JavaScript standard style linter
- changelog-maker — A git log to CHANGELOG.md tool
- vtop — visual
top
- pkg-name — Check whether a package name is available on npm
- wzrd — Super minimal browserify development server
- garnish — prettifies ndjson from wzrd and similar tools
- opnr — launches the browser when ndjson criteria is met
- wtch — small livereload utility for rapid prototyping
- rm-modules — Recursively remove all node_modules directories within the chosen root directory
- wsnc — websocket netcat
- rtcat — webrtc netcat
- urit — RFC 6570 uri templates
- fsm-event — stateful finite state machine
- publish-release — Create GitHub releases with assets
- depenency-check — Assert deps
- psy — process monitor command
- simple-index-html — a simple HTML index through stream
- inject-lr-script — inject live reload into HTML content
- husky — npm git-hooks
Markdown
- highlights — Syntax highlighter
- remark — Markdown processor powered by plugins
- remark-lint — Markdown code style linter
- remark-toc — Generate a Table of Contents (TOC) for Markdown files
- remark-man — Compile Markdown to man pages (roff) with remark
- remark-strip-badges — Remove badges (such as shields.io) from markdown
- remark-usage — Add a usage example to your Readme
- remark-inline-links — Transform references and definitions into normal links and images
- remark-html — Compile Markdown to HTML with remark
Browserify
- browserify — browser-side require() the node.js way
- webworkify — launch a web worker that can require() in the browser with browserify
- errorify — Browserify plugin to write failed build error messages to the output file
- watchify — watch mode for browserify builds
- envify — Selectively replace Node-style environment variables with plain strings
- uglifyify — A browserify transform which minifies your code using UglifyJS2
- exorcist — Externalizes the source map found inside a stream to an external .js.map file
- disc — Visualise the module tree of browserify project bundles and track down bloat
- factor-bundle — factor browser-pack bundles into common shared bundles
- brfs — browserify fs.readFileSync() static asset inliner
- unassertify - remove
assert
calls from a bundle - varify - convert all const assignments to var assignments
- es6-templates - ES6 template strings compiled to ES5
Client-side MVC
- wayfarer — Modular trie based router
- simple-store — event emitting data store
- barracks — event dispatcher for client and server
- es6-promise — polyfill for ES6-style Promises
- any-promise — Resolve any installed ES6 compatible promise
- isomorphic-fetch — Isomorphic WHATWG Fetch API
- webcomponents.js — A suite of polyfills supporting the HTML Web Components specs
- nets — nothing but nets. http client that works in node and browsers
- user-agent-parser — Lightweight JavaScript-based user-agent string parser
- ua-device-type — user agent based device type sniffer tablet||phone||tv||desktop
- inflight — Add callbacks to requests in flight to avoid async duplication
- scroll-to-element — Smooth scrolling to an element via selector or node reference
- drag-and-drop-files — Handle file drag-and-drop events without all the Yak shaving
- drag-drop - HTML5 drag & drop for humans
- filereader-stream — Read an HTML5 File object (from e.g. HTML5 drag and drops) as a stream
- value-event — Create DOM event handlers that write to listeners
- dom-delegator — Decorate elements with delegated events
- inject-lr-script - inject live reload into HTML content
- addressbar - Expose addressbar as an input field
- oauth-open - minimal popup for authenticating with oauth
- store-emitter - state lib
- event-source-polyfill - event source polyfill
- xhr-request - tiny http client for Node and the browser
- component-cookie - manage cookies in the browser
Client-side components
- tipp - Tool tips that just work
- flaps - create android-like swipe-from-the-side menus
- zip-input - ZIP input component for virtual-dom
- spectrum - JavaScript Color picker
- fs-explorer - file system explorer element
Virtual-Dom
- hyperx - tagged template string virtual dom builder
- virtual-app - redux-like, unidirectional state management paired with virtual-dom
- vdom-curry - Partially apply an idiomatic mercury component
CSS
- css-wipe — Reset the browser's styles
- defaultcss — Add a style definition in your HTML
- cssnext — Use tomorrow's CSS syntax, today
- wrap-selectors — Wrap CSS selectors up within a prefix and/or suffix
- picturefill — A responsive image polyfill for <picture>, srcset, sizes, and more
- css-element-queries — CSS-Element-Queries Polyfill
Server MVC
- brick-router — Modular router for serving static assets
- brick-server — Create an http handler for brick-router
- server-summary — Log basic server information after an http server start
- on-finished — Execute a callback when a request closes, finishes, or errors
- body — Body parsing
- methodist — HTTP method matching
- send-data — send data through response
- corsify — CORS up a route handler
- media-types — handle multiple media types
- redirecter — Easy redirection
- filed — Simplified file library
- packify - packs up browserify apps by inlining all assets into one html file
- tiny-lr - tiny livereload
- qs - querystring parser with nesting support
- format-stack - Formats a stack with colors
- downgrade - Sets the user identity of the process
DOM
- virtual-dom — A Virtual DOM and diffing algorithm
- vdom-to-html — Turn virtual-dom nodes into HTML
- virtual-html — Convert given HTML into Virtual DOM object
- value-event — Create DOM event handlers that write to listeners
- domify — Turn HTML into DOM elements x-browser
- custom-element — Convenience wrapper for creating custom element prototypes
- synthetic-dom-events — create DOM compliant custom events
- main-loop — A rendering loop for diffable UIs
- dom-wrap — Make dom elements easier to work with
- base-element — An element authoring library for creating standalone and performant elements
- get-form-data — Gets form and field data via form.elements
- query-immediate-selector — Selector matching only for direct children of an element
- zeroclipboard — copy text to the clipboard using an invisible Adobe Flash movie
- domready — lets you know when the dom is ready
- touches — simplified touch/mouse events for flick and swipe
- insert — DOM insertion library
- next-tick — Environment agnostic nextTick polyfill
- dom-delegator — Decorate elements with delegated events
- html-delegator — Decorate elements with delegated events
- value-event — Create DOM event handlers that write to listeners
- smooth-move - Smoothly scroll a scrollable element
- screen-orientation - Get the current screen orientation
- blur-active - Blur the active DOM element
- mediasource - MediaSource API as a node.js Writable stream
- phone - validate and format the phone number to E.164 standard
SVG
- virtual-hyperscript-svg — create virtual-dom nodes for svg using hyperscript syntax
- vivus — JavaScript library to make drawing animation on SVG
- create-svg-size - Create an svg object with a given x/y width/height
Data manipulation
- pbs — Streaming protocol buffers encoder/decoder
- format-data — Format tabular data from an object stream to different standard formats
- CSV-write-stream — A CSV encoder stream that produces properly escaped CSVs
- CSV-parser — Streaming csv parser inspired by binary-csv that aims to be faster than everyone else
- ndjson — streaming line delimited json parser + serializer
- ssejson — Parse and Serialize object streams over SSE/EventSource
- trumpet — parse and transform streaming html using css selectors
- hyperstream — stream html into html at a css selector
- html-template — build templates with ordinary html for node and browsers
- torrent-stream — The low level streaming torrent engine that peerflix uses
- tar-stream — tar-stream is a streaming tar parser and generator
- gunzip-maybe - Transform stream that gunzips its input if it is gzipped
- reconnect-core — Generic stream reconnection module
- event source stream — EventSource implemented in node and the browser as a readable stream
- response-stream - Pass http server response methods through to the next destination pipe
- JSONStream - rawStream.pipe(JSONStream.parse()).pipe(streamOfObjects)
Testing
- tape — tap-producing test harness for node and browsers
- smokestack — Pipe your JavaScript into a browser, logging console output in Node
- tap-closer — Close process on exit
- covert — Code coverage command
- coverify — Code coverage browserify transform
- nyc - code coverage tool that works well with subprocesses
- browser-test-helpers — A small set of generic test helpers for browser interaction tests
- tap-status — force correct exit codes for TAP runners
- faux-jax — Intercept and respond to requests in node + browser
- proxyquire — Proxy node's require
- proxyquirify — browserify v2 version of proxyquire
- proxyquire-universal — proxyquire in node and the browser
Networking
- signalhub — Simple signalling server that can be used to coordinate handshaking with webrtc
- bittorent-dht — Simple, robust, BitTorrent DHT implementation
- webrtc-swarm — Create a swarm of p2p connections using webrtc and a signalhub
- peer-wire-swarm — swarm implementation for bittorrent
- airswarm — Network swarm that automagically discovers other peers on the network using multicast dns
- network-address - get the local network address of your machine
- create-torrent - Create .torrent files
- webtorrent - Streaming torrent client for the web
Neato functions
- curry — simple curry module, with nothing too clever
- clamp — Clamp a value between two other values
- uniq — Removes duplicate items from an array in place
- xtend — extend an object by appending all of the properties from each object in a list
- clone — Deep cloning of objects, arrays, etc.
- map-limit — async.mapLimit's functionality available as a standalone npm module
- to-factory — Convert ES6 classes into factory functions so they can be called with or without new
- sprintf-js — JavaScript sprintf implementation
- strftime — strftime for JavaScript
- auto-daemon — automatically spawn implicit background services
- error — Error handling utilities for node
- fuzzysearch — Tiny and blazing-fast fuzzy search in JavaScript
- mutexify — Bike shed mutex lock implementation
- deep-equal — Node's assert.deepEqual() algorithm as a standalone module
- deep-merge — Deep merge objects with custom merging logic
- array-union — Create an array of unique values, in order, from the input arrays
- traverse — traverse and transform objects by visiting every node on a recursive walk
- resolve — Implements the node.js require.resolve() algorithm
- has — Object.prototype.hasOwnProperty.call shortcut
- function-bind — implementation of Function.prototype.bind
- array-find - Return the first array element which satisfies a testing function
- throttle - Throttle a function call
Filesystem
- readdirp — Recursive version of fs.readdir with streaming api
- rimraf — A
rm -rf
util for nodejs - chmodr - Like
chmod -R
in node - mkdirp - Recursively mkdir, like
mkdir -p
, but in node.js - findup - Walk up ancestor's dirs up to root
- graceful-fs - fs with incremental backoff on EMFILE
- stat-mode - Offers convenient
getters and setters for the stat
mode
- touch - touch(1) for node
Streams
- bl — buffer List: collect buffers and access with a standard readable Buffer interface, streamable too!
- duplexify — Turn a writeable and readable stream into a streams2 duplex stream
- concat-stream — writable stream that concatenates strings or data and calls a callback with the result
- from2 — Convenience wrapper for ReadableStream, with an API lifted from "from" and "through2"
- from2-array — Create a from2 stream based on an array of source values
- from2-string — Create a stream from a string. Sugary wrapper around from2
- through2 — Tiny wrapper around Node streams2 Transform to avoid explicit subclassing noise
- pump — pipe streams together and close all of them if one of them closes
- pumpify — Combine an array of streams into a single duplex stream using pump and duplexify
- debug-stream — use the debug module on a stream
- stream-iterate — Iterate through the values of a stream
- multiplex-rpc — rpc with multiplexed duplex streams
- split2 — Split Streams2 style
- mississippi — a collection of useful stream utility modules
- cache-stream - caching stream for Node.js streams 2 api
- multistream - A stream that emits multiple other streams one after another
- parallel-multi-stream - Parallel version of multistream
- end-of-stream - Execute a callback when a stream ends, finishes or errors
- stdout-stream - Non-blocking stdout stream
- size-stream - Count the size of a stream in bytes
- progress-stream - Read the progress of a stream
- peek-stream - Transform stream that lets you peek the first line before deciding how to parse it
- query-schema - stream filtering with uri safe query syntax to json schema
Event emitters
- geval — event implementation
- value-event — Create DOM event handlers that write to listeners
- dom-delegator — Decorate elements with delegated events
- html-delegator — Decorate elements with delegated events
- event-sinks — create a set of sinks for events
CLI
- minimist — parse argument options
- cliclopts — CLI options helper and usage printer
- subcommand — Create CLI tools with subcommands
- subarg-replace — regex replace on subarg list
- string-editor — Edit a string using $EDITOR from within your node app
- subarg — parse arguments with recursive contexts
- cli-md — Markdown for your Terminal
- shell-quote — quote and parse shell commands
- rc — The non-configurable configuration loader for lazy people
- inquirer — A collection of common interactive command line user interfaces
- notify-error - send an error notification
- clear - Clear the terminal screen if possible
- ansi - Advanced ANSI formatting tool for Node.js
- single-line-log - output one line
- application-config - Store your applications config where the operating system wants you to
Database
- content-addressable-blob-store — streamable content addressable blob object store
- batchdb — leveldb and disk storage for queued batch jobs
- forkdb — forking content-addressed append-only historical key/value blob store over leveldb
- level-browserify — convenience package bundling LevelUP & LevelDOWN or Level.js
- mynosql — Arbitary WHERE queries for leveldb
- level-ttl — Add a 'ttl' (time-to-live) option to LevelUP for put() and batch()
- memdb — LevelUp + MemDown
- abstract-blob-store — A test suite and interface for blob stores
- lev — The complete REPL & CLI for managing LevelDB instances
- bytewise — Binary serialization of arbitrarily complex structures that sort bytewise
- level-secondary — Secondary indexes for leveldb
- level-tmp — Create a temporary sublevel that is guaranteed to be empty
- level-logs — Store multiple append only logs in leveldb
- sublevel-prefixer — Prefix a key with a sublevel prefix
- map-reduce async map-reduce functions for nodejs
- level-indexer — generic property indexer for leveldb
- level-livefeed — Live query a range in leveldb
- sqs — A message queue using Amazon Simple Queue Service
- hyperemitter — Horizontally Scalable EventEmitter powered by a Merkle DAG
- atomic-queue — a crash friendly queue that persists queue state and can restart
- superlevel — minimalist CLI utility for leveldb databases
- level-defaults - Change the defaults settings on a LevelUp instance by returning a new LevelUp instance that uses the same leveldown but different options
- level-events - Get an event every time something is written / read / deleted using LevelUp
Data structures
- merkle-dag — Merkle DAG on top of LevelDB
- hyperlog — Merkle DAG that replicates based on scuttlebutt logs and causal linking
- hyperlog-index — transactional indexes for hyperlog
- functional-red-black-tree — A purely functional red-black tree data structure
- seamless-immutable — immutable backwards compat JS structures
- flat-tree — A series of functions to map a binary tree to a list
- observ — An observable value representation
- observ-struct — An object with observable key value pairs
- observ-array — An array containing observable values
- observ-node-array — Populate an observable array from node descriptors
- plucker — Pluck nested properties from an object.
- flat — Flatten/unflatten nested Javascript objects
- fifo — FIFO queue in Javascript
- bloomrun - A js pattern matcher based on bloom filters
External
- electron-prebuilt — install electron prebuilts using npm
- electron-packager — package and distribute your electron app in OS executables (.app) via JS or CLI
- titlebar — Emulate OS X window title bar
- electron-rebuild — build native modules against the current Electron version
- electron-cookies — add support for cookies in Electron
- electron-gh-releases — Electron auto-update by releasing on Github
- silence-chromium — Filter out spurious log messages for chromium/electron stderr
- npm-execspawn — Spawn locally installed npm dependencies with cross platform env and arguments
- link-bin — Make bin scripts work local npm dependencies
- npm-start — 'npm start' written in bash that propagates kill to subprocesses
- node-auto-launch — Launch node-webkit apps at login (mac & windows)
- 0x - flame graph profiling with a single command
- fastbench - simple benchmark
Native
- node-gyp — Node.js native addon build tool
- node-bindings — Helper module for loading your native module's .node file
- nan — Native Abstractions for Node.js
Hardware
- bleno — A node.js module for implementing BLE (Bluetooth low energy) peripherals
- noble — A node.js BLE (Bluetooth low energy) central module
- chromecasts — Query your local network for Chromecasts and have them play media
- mosca — MQTT broker as a module
Package log
Instead of adding packages by hand I'm adding useful JS packages through a CLI; that way it's easier to search back in history and append new packages to the list.
- jxnblk/vhs
- dominictarr/multiblob
- pfrazee/pull-identify-filetype
- jshttp/mime-types
- uWebSockets/uWebSockets
- DylanPiercey/parse-form
- ahdinosaur/pull-xhr
- mafintosh/utp-native
- Raynos/tape-cluster
- yoshuawuyts/base-elements
- pfrazee/suggest-box
- dominictarr/explain-error
- thlorenz/browserify-shim
- sethvincent/beldown
- sethvincent/create-html
- kristoferjoseph/svg-symbols
- matthewmueller/envobj
- hughsk/closest-package/
- sethvincent/beldown
- mafintosh/ansi-diff-stream
- watson/progress-string
- carter-thaxton/electron-default-menu
- freeman-lab/pixel-grid
- bengourley/choo-resume
- bengourley/hot-rld
- localtunnel/localtunnel
- yoshuawuyts/multidrive
- sethvincent/level-model
- date-fns/date-fns
- joehand/dat-verb
- maxogden/collaborator
- sethvincent/read-directory
- mcollina/fast-json-parse
- mcollina/syncthrough
- pfrazee/pretty-hash
- domenic/opener
- mafintosh/block-trace
- mafintosh/add-nginx-ssl
- juliangruber/tape-run
- mafintosh/subleveldown
- mafintosh/hypercore-archiver
- mafintosh/recursive-watch
- Raynos/console-stream
- punkave/sanitize-html