Awesome Node.js 中文版
一份nodejs的超级大礼包 包(packages) and 资源(resources)。
被老外的awesome 清单刺激到,觉得有必要翻译一份,为国产的程序员们做点事情,本清单将保持实时更新同步。PS:进都进来了,就顺便看看其他的吧:
如果想加入,那就加入吧。
目录
包
神奇的科学
- webtorrent - WebTorrent 是一个可工作在node.js和浏览器的流BT客户端。它完全采用JavaScript开发,在浏览器中WebTorrent使用WebRTC (data channels) 来进行p2p传输。它可以不使用浏览器插件,扩展或安装。只有JavaScript。
- GitTorrent - Git仓库的P2P网络,通过比特流分享。
- peerflix - 流客户端.
- dat - Dat 是开源的项目,进行实时复制,数据集版本控制,提供每个文件格式和数据存储后端的流。.
- ipfs - IPFS 是分布式文件系统,寻求连接所有计算机设备的相同文件系统。在某些方面,这很类似于原始的 Web 目标,但是 IPFS 最终会更像单个比特流群交换的 git 对象。
- stackgl - WebGL的开源软件生态系统,基于browserify和npm构建。
- peerwiki - 比特流上的所有wiki
- peercast - 推送视频流到Chromecast.
- BitcoinJS - BitcoinJS 是一个纯 JavaScript 库,支持 Node.js和浏览器,用于操作各种比特币钱包。代码清晰,可读性强。
- Bitcore - Bitcore 是一个完整原生的比特币网络的 JavaScript 开发库,提供比特币应用开发的核心功能。
- PDFKit - PDF生成器库.
- turf - Turf 是一个 JavaScript 的模块化的 GIS 引擎,它执行地理空间与GeoJSON数据处理任务,可以在服务器或在浏览器上运行。
- webcat - 使用您的GitHub的私有/公共密钥认证的p2p管道,可以通过WebRTC跨web使用。
- js-git - Git的JavaScript实现。
- NodeOS - 第一个通过npm实现的操作系统,使用Node.js编写。
- limdu - 一个机器学习框架。
- Cytoscape.js - Cytoscape.js 是个开源 JavaScript 图形库,用户可以用 Cytoscape.js 来分析和制作可视化图形。它兼容 CommonJS/Node.js, jQuery 1.4+ 和纯 JavaScript。
命令行应用
- pageres - 网站截图工具。
- trash - trash 命令替代linux rm命令实现windows回收站的功能
- npm-name - 检查报名在npm上是否可用。
- XO - XO 是 JavaScript 幸福样式,强制执行严格代码风格,pull request 的时候不会再讨论代码风格。没有 .eslintrc,.jshintrc,.jscsrc 管理。
- speed-test - 测试网络连接速度和ping。
- np - 比
npm publish
更好用。 - yo - 运行Yeoman生成器。
- Babel - 从现在开始使用下一代JavaScript。
- ESLint - ESLint 是一个开源的插件化得JavaScript验证工具,相比JSLint,ESLint具有可配置性。
- JSCS - JavaScript代码风格检查。
- Standard - JavaScript标准风格,使用一种风格来限制所有。
- cpy - 复制文件。
- fkill - 跨平台的,更好的杀死进程的方式。
- vantage - Vangtage.js 是一个全新的 Node 交互式 CLI。Vangtage 灵感来源于 commander.js,通过 inquirer.js 的交互式 prompt 把在线 Node 应用转换到 CLI。可以本地或者远程访问,Vantage 可以让你构建自己的 API,导入社区扩展等等。
- vtop - 更好更漂亮的图表。
- tmpin - 给所有能接受文件输入的CLI应用添加标准输入支持。
- empty-trash - 清空回收站。
- is-up - 检查Web站点是否在线。
- is-online - 检查是否联网。
- public-ip - 获取你的公网IP。
- dark-mode - 触发OS X的夜间模式。
- ttystudio - 记录你的终端并且编译成GIF或者APNG动态图,无需任何依赖,bash脚本或者gif相关的东西。
- David - 当你的npm依赖过时的时候通知你。
- http-server - 简单,零配置的命令行HTTP服务器。
- Live Server - 一个自带热加载功能的http服务器。
- bcat - 将命令行输出到web浏览器。
- normit - 在终端运行的包含语音合成Google翻译。
- slap - 类似于Sublime的基于命令行的文本编辑器。
- jsinspect - 发现复制粘贴的或者结构相似代码。
- esformatter - JavaScript代码格式化。
- pjs - 能作为管道使用的JavaScript,从终端快速过滤,映射等。
- license-checker - 检查应用的依赖的证书。
- browser-run - 轻松在浏览器环境中运行代码。
- modhelp -在终端动态高亮README模块。
- wifi-password - 在终端通过命令行获取当前的wifi密码。.
- wallpaper -命令行改变桌面的背景。
- brightness - 命令行改变屏幕的亮度。
- torrent - 下载种子。
- tfa - Two-factor验证客户端。
- rtail - 使用Unix管道,在终端实时输出浏览器多个流。
- kill-tabs - 通过关闭Chrome 窗口来提升性能,减少电池消耗,节约内存。
- alex - Catch insensitive, inconsiderate writing.
- pen - 浏览器中的你最喜欢的编辑器Markdown实时预览。
- subdownloader - 电影和电视剧的字幕下载。
- iponmap - IP地址查找。
- Jsome - 根据配置的颜色和排版格式化打印JSON。
- itunes-remote -iTunes交互控制.
- dev-time - 获取一个用户当前的本地时间.
- text-meme - 生成一个text meme.
- mobicon - 生成手机应用的icon.
- mobisplash - 生成手机应用的 splash 屏幕.
- diff2html-cli - 好看的 git diff 的html生成器.
- Cash - 纯js实现的跨平台的Unix shell命令.
- vaca - 获取一个随机的ASCII
🐮 . - gh-home - 在当前的directory打开一个GitHub仓库的页面.
- npm-home - 打开一个npm包的home页面.
函数式编程
- lodash - 一个工具库,相当于一个更好更快的 Underscore.js.
- immutable - 数据持久化.
- mori - A library for using使用 ClojureScript的持久化数据结构,且支持 vanilla JavaScript API的库.
- Ramda - 专注于灵活的函数式编程的工具库,能力来自于自动柯里化和函数参数优先于数据,提供了mutating data.
- Folktale - 一整套通用的JavaScript函数式编程方案,帮助你构建优雅的,组合式的健壮且高度复用的应用。
- underscore-contrib - The brass buckles on Underscore's utility belt.
- Mout - 和其他工具库最大的不同是,你可以选择只下载你需要的模块或函数,没有额外的负担。
- RxJS - 函数式响应式编程库,专注于大量不同数据的转换,构建和查询。
- Lazy.js - Lazy.js是类似Underscore或Lo-Dash的JavaScript工具库,但是它有一个非常独特的特性:惰性求值。很多情况下,惰性求值都将带来巨大的性能提升,特别是当处理巨大的数组和连锁使用多个方法的时候。
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.
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.
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.
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.
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.
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.
- Jade - 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 like awesome-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.
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
andfs.watchFile
as well as using nativefsevents
on OS X. - 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.
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.
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
- ndarray - Multidimensional arrays.
- mathjs - An extensive math library.
- math-sum - Sum numbers.
- math-clamp - Clamp a number.
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
- normalize-url - Normalize a URL.
- humanize-url - Humanize a URL: http://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.
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
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.
Database
- Drivers
- LevelUP - LevelDB.
- MongoDB - MongoDB driver.
- PostgreSQL - PostgreSQL client. Pure JavaScript and native libpq bindings.
- MySQL - MySQL client.
- Redis - Redis 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.
- 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.
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
- UglifyJS2 - JavaScript minifier.
- clean-css - CSS minifier.
- minimize - HTML minifier.
- imagemin - Image minifier.
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.
- Nodemailer - The fastest way to handle email.
- emailjs - Send text/HTML emails with attachments to any SMTP server.
Job queues
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
- Node.js
- set-immediate-shim - Simple
setImmediate()
ponyfill. - path-is-absolute - Node.js 0.12
path.isAbsolute()
ponyfill. - os-tmpdir - Node.js
os.tmpdir()
ponyfill. - os-homedir - Node.js 4.0
os.homedir()
ponyfill. - debug-log - Node.js 0.12
util.debuglog()
ponyfill. - buffer-equals - Node.js 0.12
buffer.equals()
ponyfill. - buffer-includes - Node.js 5.3.0
buffer.includes()
ponyfill. - buf-indexof - Node.js 4.0
buffer.indexOf()
ponyfill. - buf-compare - Node.js 0.12
Buffer.compare()
ponyfill. - fs-access - Node.js 0.12
fs.access()
&fs.accessSync()
ponyfill. - exec-file-sync - Node.js 0.12
childProcess.execFileSync()
ponyfill. - child-process-ctor - Node.js 4.0
childProcess.ChildProcess
ponyfill. - node-status-codes - Node.js
http.STATUS_CODES
ponyfill. - exit-code - Node.js 0.12
process.exitCode
polyfill. - core-assert - Node.js
assert
as a standalone module. - deep-strict-equal - Test for deep equality - Node.js
assert.deepStrictEqual()
algorithm as a standalone module.
- set-immediate-shim - Simple
- JavaScript
- object-assign - ES2015
Object.assign()
ponyfill. - pinkie-promise - ES2015
Promise
ponyfill. - harmony-reflect - ES2015
Reflect
andProxy
polyfill. - es6-shim - Collection of ES2015 polyfills.
- More ES2015 polyfills at es6-tools.
- object-assign - ES2015
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
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
- 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・^)ノ”
- cows - ASCII cows.
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.
- node-bell - 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.