awesome-dev-nodejs
Awesome-Node.JS-List
:heart: 收藏列表 - :+1: 很棒的 Node.js 开发工具和生态技术。
Favorites list - great Node.js development tools and ecological technology.
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,使用了一个事件驱动、非阻塞式 I/O 的模型,为 JavaScript 提供了一个服务器端应用程序开发平台,👉 https://nodejs.org/ / https://nodejs.dev/
OpenJS Foundation - 开源 JS 基金会,由 Node 基金会和 JS 基金会合并而成。
(Recommend)推荐一个其它的很棒的收藏列表, 👉 https://github.com/sindresorhus/awesome-nodejs
目录
Resource navigation list.
- 技术标准规范(Technical Standard Specification)
- 技术参考文档(Technical Reference Document)
- Node 版本管理(Node Version Management)
- Node 包管理(Node Package Manage)
- 构建工具(Build Tools)
- 工具库(Tool Library)
- 命令行工具(Command Line Tools)
- 数据库(Database)
- Web 服务器框架(Web Server Framework)
- 内容管理系统(Content Management System)
- 桌面端开发(Desktop Development)
- 深入探索(Explore In Depth)
- 文章(Article)
- 更多(More)
技术标准规范
Technical standard specification.
-
- V8 - Node.js 的运行时,也是 Chrome 浏览器的 JS 运行时。👉 中文翻译
- CommonJS - Node.js 默认采用的模块加载方式。
- AMD - 异步模块定义,适合浏览器端。
- Universal Module Definition - 通用模块定义,兼容 AMD、CommonJS 以及全局变量方式。
-
Worker Runtimes - 构建 HTTP 服务器的新标准。
More others 👉 Awesome-Development-Technical-Standard-Specifications
技术参考文档
Official and unofficial technical reference documents.
-
标准实现状态(Standard implementation status)
- compatibility table - 可查询 ECMAScript API 在各个版本 Node.js 实现的状态,非官方网站。
-
Node.js 中文网 - 唯一与官方同步更新的 Node.js 中文文档。
-
Node.js Best Practices - Node.js 最佳实践。
-
Node.js Reference Architecture - Node.js 参考架构。
-
Tao of Node - Design, Architecture & Best Practices - 设计、架构和最佳实践。
-
nodejs-integration-tests-best-practices - Node.js 后端集成测试最佳实践。
-
Testing From A To Z - 全面详细的 Node.js 测试最佳实践。
-
hackathon-starter - Node.js Web 应用模板。
Node 版本管理
Node version management, can install multiple versions at the same time, and switch at any time.
- n - npm 包,Node 版本管理工具,不支持 Windows 系统。
- nvm - Node 版本管理,不支持 Windows 系统。
- nvm-windows - Node 版本管理工具,仅支持 Windows 系统。
- fnm - Rust 编写的 Node 版本管理工具,支持 Windows/Linux/Mac 系统。
- Volta - Rust 编写的工具链版本管理工具。
Node 包管理
Node.js package (or library) manage.
-
包管理器(Packages Manageer)
-
包开发(Package Development)
npm publish
- np - 让发布更优雅、安全。
- standard-version - 自动化版本管理和变更日志生成。( ⚠️ 不再维护)
- release-it
- semantic-release - CI 自动化版本管理和包发布。
- auto - CI 自动化发布。
- release-please - 自动生成更新日志、版本更新、创建 Github Release。
- Denoify - 为 npm 模块作者提供 Deno 支持。
- auto-changelog - 根据提交记录和标签生成更新日志。
- yalc - 类似
npm link
的工具。
-
包搜索(Package Search)
- npm.io - 聚合搜索引擎。
- Npm Trends - 可以查询对比多个 Npm 包的下载流量数据、star 数目等。
- Moiva - 比较 Github 和 npm 包下载趋势,关注度等等。
- PickBetterPack 根据
package.json
文件分析已安装包的相似的依赖包。 - Npm Charts - 可以查询对比多个 Npm 包的下载流量数据、star 数目等。
- Microjs - 查询可用的最小的包。
- vanilla list - 查询可用的最小的包。
-
包分析(Package Analysis)
- BUNDLEPHOBIA - 分析 npm 包大小和依赖关系。
- Package Phobia - 分析 npm 包大小。
- runpkg - 在线浏览 npm 包内的文件内容。
- pkg.land - 寻找替代模块(方案)。
- publint - 发现包的发布错误,并给出建议。
- npm graph - 以树图分析 npm 包依赖。
-
Monorepo 工具(Monorepo Tools)
- monorepo.tools
- Lerna - 管理 Monorepo 架构的 Node 模块代码库工具。
- Nx - 管理 Monorepo 架构的 Node 模块代码库工具。
-
工具(Tools)
- Verdaccio - 开源的轻量级私有 npm 代理仓库。
- nrm - npm 换源。
- npm-check-updates - 项目依赖 npm 包批量更新工具。
- depcheck - 项目依赖检查。
- depp - 项目依赖检查,是否存在未使用或者重复的依赖。
- npkill - 搜索系统中的 node_modules 文件夹并清理。
- qnm - 搜索 node_modules 目录的工具。
- njt - npm jump to,npm 包搜索并跳转到相应 npm 站点。
- patch-package - 对模块打补丁进行修复。
- npm-packlist - 检查 npm 包发布后包含的所有文件。
构建工具
Build toolchains for web frontend and node.js app development.
-
构建 Web 应用(Build Web Apps)
- Create App - 前端项目构建工具启动配置。
- Modern Web - 现代 Web 开发的指南、工具和库。
- Open Web Components - 用于开发 Web 组件的指南、工具和库。
-
文档(Doc)
- JSDoc - JavaScript 的 API 文档生成工具。
- ESDoc
- typedoc - 生成 TypeScript 项目文档。
- Code Highlighting
- highlight.js - 页面代码高亮。
- Prism.js - 页面代码高亮。
- Shiki - 页面代码高亮。
- Markdown Converter
- markdown-styles - 命令行工具,将 Markdown 文件批量转换为特定主题样式的 HTML 文件。
- github-markdown-css - 最小的 Github 风格的 Markdown 样式。
-
配置(Config)
- dotenv - 从 .env 文件为 Node.js 项目加载环境变量。
- node-config
- cosmiconfig - 搜索并加载配置文件。
-
环境变量(Environment variable)
-
日志(Log)
-
调试(Debug)
- debug - 打印 debug 日志。
- Source Map - 生成和解析
.map
文件,调试压缩代码,Mozilla 发布。 - Mobile Debug
-
性能分析(profiling )
- 0x
- clinic.js - 性能分析、监控、指标收集。
- Tinybench - 基准测试。
- mitata - 基准测试,支持自动 GC,可视化结果。
- autocannon - HTTP 请求基准测试。
-
测试(Test)
-
数据校验(Data Validation)
-
模拟 API(Mock API)
- JSON Server - 可快速启动一个提供 REST API 的服务器,并返回指定测试数据。
- Nock - 模拟 API 服务,响应指定测试数据。
- Mock.js - 模拟 API 服务,响应随机测试数据。
- Mock Service Worker - 利用
Service Worker
API 拦截请求并实现 Mock API。 - Mirage JS
- faker.js - 生成大量随机测试数据,可用来开发过程中进行 API 调试。
- Chance - 生成随机的测试数据。
-
进程管理(Process Manage)
- 热重载(Hot reload)
- 生产部署
- Forever - Node 应用生产环境进程管理工具,使用简单方便。
- PM2 - Node 应用生产环境进程管理工具,支持集群、负载、远程部署,提供收费服务的实时监控平台。
- StrongLoop-PM - Node 应用生产环境进程管理工具。(⚠️ 不再积极开发)
- cluster-service
- 进程安全关闭
- terminus
- http-shutdown - (⚠️ 不再积极开发)
- node-graceful-shutdown
-
编译器(Compiler)
- JavaScript / TypeScript
- CSS / Less / Sass
- Sass - CSS 预处理器 ,可提供类似编程语言的能力(变量、方法、作用域、嵌套)来编写 CSS。
- Sass Guidelines - Sass 语法风格指南,非官方。
- PostCSS - CSS 后处理器,提供众多插件来实现还未被广泛实现和标准化的 CSS 功能特性,最终将其编译为目标平台支持的 CSS 代码。
- CSS In JS
- JSS - 一种 CSS-in-JS 的解决方案。
- styled components - 一种 CSS-in-JS 的解决方案。
- modular-css - CSS 模块的扩展实现。
- Sass - CSS 预处理器 ,可提供类似编程语言的能力(变量、方法、作用域、嵌套)来编写 CSS。
- Others
-
API 兼容性支持(API Polyfills)
- Browserslist - 社区主流的目标设备检测工具库。
- browsersl.ist - 官方。
- browserslist.dev - 非官方。
- HTML
- html5shiv - 在旧浏览器(IE9 以下)上提供对 HTML5 新标签(例如 footer、nav)的支持。
- CSS
- Respond - 在旧浏览器(IE 6-8)上提供对 CSS3 Media Queries(媒体查询)的支持。
- selectivizr - 在旧浏览器(IE 6-8)上提供对 CSS3 新选择器的支持,注意
style
标签内样式不解析,动态生成的 DOM 也不解析。 - css-paint-polyfill -
CSS Paint API
。
- JavaScript
- Polyfill.io - Polyfills 服务。
- core-js - 现代 JavaScript 标准库。
- es-shims - ECMAScript 的 Polyfills 集合。
- Promise Polyfill - 为浏览器提供 Promise API 支持。
- webp-hero - 为浏览器提供 WebP 格式图片支持。
- fetch - 提供
window.fetch
API 的兼容性支持。 - unfetch - 提供简单的 Fetch API 支持。
- smoothscroll-polyfill - 提供平滑滚动的支持。
- Browserslist - 社区主流的目标设备检测工具库。
-
打包工具(Bundler)
-
代码静态分析(Code Static Analysis)
-
代码版本管理(Code version management )
- husky - 更容易的使用 Git Hooks。
- lint-staged - 搭配 husky 使用,提交代码前进行 lint。
- commitlint - 校验 commit 信息。
- commitizen - 统 一 commit 信息格式。
- size-limit - 检测每一次提交的资源大小限制,支持 CI。
-
服务器(Server)
- Browsersync - 浏览器同步调式工具,功能非常强大。
- live-server - 具有实时重新加载页面功能的轻量静态资源 HTTP 服务器。
- devcert - 让 SSL 开发变得容易。
-
其它(Others)
- esm - 能够为
.js
文件提供 ECMAScript Modules 支持。 - envinfo - 生成开发环境信息报告。
- Madge - 生成可视化的模块依赖图。
- SystemJS - 动态 ES Module 加载器。
- favicons - 网站图标生成器。
- quicktype - 在多个语言之间共享类型,生成类型代码。
- js2flowchart - 分析代码生成执行流程图。
- esm - 能够为
工具库
Tool Library, some unofficial high-quality Node.js packages (or libraries).
see also 👉 awesome-nodejs
-
实用工具(Utils)
- 颜色解析(Color)
- 异步操作(Asynchronous operation)
- promise-fun -
Promise
工具库集合。
- promise-fun -
- 对象操作(Object manipulation)
- 其它(Others)
- normalizr - 根据 Schema 将嵌套的 JSON 数据归一化。
- Anchorme.js - 将文本中的 URL/邮箱等转换为链接。
-
实用函数库(utility library)
- 通用(Generic)
- Underscore - JavaScript 的工具函数库,提供了大量非常有用的工具函数。
- Lodash - JavaScript 的工具函数库,参考自 Underscore,功能更丰富。
- Ramda - JavaScript 的工具函数库,专门针对于函数式编程。
- rambda - Ramda 的更快、更轻量的替代方案。
- Remeda.js - JavaScript 的工具函数库,专门针对于函数式编程,同时支持 "data-first" 和 "data-last" 的范式。
- ts-belt - JavaScript 的工具函数库,专门针对于函数式编程,更快、更现代化。
- RxJS - 响应式编程(Reactive Extensions)的 JavaScript 实现,对异步数据集合处理很方便。
- deepmerge - 对象的深度合并,可自定义合并策略。
- simple-statistics - 一些常用的统计方法。
- Radash - 现代的、函数式工具库。
- es-toolkit
- 深度相等判断(Equal depth)
- fast-deep-equal - 高性能,支持比较 ES6 Map, Set 和 Typed arrays。( ⚠️ 不再更新)
- dequal
- microdiff - 高性能数组与对象的相等比较。
- diff - 文本差异算法。
- 函数记忆化(Function memoization)
- mem - 函数缓存,可控制缓存有效期等。
- moize - 函数缓存,功能丰富。
- memoize-one - 函数缓存,轻量级,仅缓存最后一次执行结果。
- 通用(Generic)
-
UID
-
日期时间(Date && Time)
-
科学计算(Compute - Math && High precision && Scientific Computing)
- math.js - 基本数学计算。
- big.js - 十进制数计算,还有相关的 bignumber.js 和 decimal.js。
- stdlib
- glMatrix - 矩阵和矢量运算。
- currency.js - 轻量的货币计算工具库。
- Dinero.js - 货币计算。
-
数据操作(Data Manipulation)
- Danfo.js - 处理结构化数据的工具库,类似 Python 的 Pandas。
- bson - BSON 格式数据解析器,MongoDB 官方发布。
- construct-js - Byte 级别数据操作工具库。
- Buffer - 可在浏览器中使用与
Node.js Buffer API
100% 相同的 API。 - Yjs - 一种高性能的 CRDT 实现,用于构建自动同步的协作应用程序。
-
数据加密、解密(Data encryption and decryption)
- bcrypt - 生成密码哈希值。
- crypto-js - JavaScript 加密库。
- https://github.com/digitalbazaar/forge - JavaScript 加密库。
- md5.js - md5 哈希库。( ⚠️ 不再更新)
- md5 - md5 哈希库。
- object-hash - 对 JavaScript 对象进行 hash 处理。
- crypto-browserify - Node 中
crypto
模块在浏览器中的实现。( ⚠️ 不再更新) - SJCL - JavaScript 加密库。( ⚠️ 不再更新)
-
文本解析/模式匹配(Text parsing/Pattern matching)
-
二维码(QR Code)
- node-qrcode - 二维码生成。
- Awesome-qr.js - 个性化二维码生成。( ⚠️ 不再更新)
-
条形码(BarCode)
-
文件(File)
- utils tools
- fs-extra - 作为官方原生
fs
模块的补充和优化。 - chokidar - 作为官方原生
fs.watch
替代方案,跨平台高效的文件监视库。 - rimraf - 为 Node 提供类似
rm -rf
删除文件操作。 - memfs - 内存文件系统。
- rotating-file-stream - 文件流自动轮转,可用于日志文件分割,类似 UNIX
logrotate
。 - file-type - 探测文件类型。
- fdir - 最快的目录搜索器。
- Tmp - 生成临时文件和目录。
- Size String Format
- bytes.js
- pretty-bytes
- filesize.js - 测量文件大小并以人类可读的方式展示。
- byte-size
- fs-extra - 作为官方原生
- html/xml
- markdown
- Marked - Markdown 解析器。
- markdown-it - Markdown 解析器。
- gray-matter - 解析 Front Matter。
- front-matter - 解析 Front Matter。
- Showdown - Markdown 到 HTML 的转换器。
- Markdoc - 一种基于 Markdown 的语法和工具链,用于创建自定义文档站点。
- json/json5/jsonl
- stream-json - 大型数据集的流式处理。
- JSON5 - JSON5 格式数据解析、序列化。
- yaml
- js-yaml - yaml 文件解析和生成。
- csv
- CSV - 功能全面的 csv 文件生成、解析、转换、序列化工具。
- Papa Parse
- xlsx
- docx
- pptx
- PptxGenJS - 生成
pptx
文件。
- PptxGenJS - 生成
- image
- sharp - 图像处理,拉伸、缩放、色彩提取等等,底层使用 libvips,无需安装其它依赖,开箱即用,效率更高。
- gm - 图像处理,需先安装 GraphicsMagick 或 ImageMagick。
- svg
- SVGO - SVG 文件优化工具。
- zip
- JSZip - 创建/读写 zip 文件。
- ADM-ZIP
- Archiver - 生成存档文件的流式接口。
- node-stream-zip - 支持大的 zip 文件。
- utils tools
-
HTML 模板引擎(HTML Template Engines)
-
HTTP 请求(HTTP Request - Ajax / Promise / fetch)
multipart/form-data
- form-data - 创建
multipart/form-data
数据,并提供正确的 Headers。 - formidable - 解析请求中的
multipart/form-data
数据。 - Busboy - 解析请求中的
multipart/form-data
数据,支持流。
- form-data - 创建
- axios - 基于 Promise 的 HTTP 客户端工具库。
- axios-mock-adapter - Mock API。
- Hyper Fetch - 支持 WebScoket 协议。
-
远程过程调用(RPC)
- Lounge - 现代的 Web RPC 客户端。
-
套接字(Socket)
- Socket.IO - 基于事件的实时通信框架,提供客户端(浏览器)和服务器实现。
- SockJS - 提供客户端(浏览器)和服务器实现。
- WebSocket-Node
- ws - Node.js WebSocket 客户端和服务器。
- faye-websocket
-
多进程/线程编程(Multi-process/thread programming)
- 线程池
- workerpool - 轻量线程池工具,支持 Node.js 与 Web 浏览器环境。
- piscina
- threads.js - 在浏览器和 Node.js 环境中实现一致的 Web Worker API。
- 工具(Tools)
- execa - 对官方
child_process
模块的改进。
- execa - 对官方
- 线程池
-
队列与作业调度(Queue & Job scheduling)
-
沙箱(Sandbox)
-
邮件(SMTP)
- Nodemailer - 邮件发送。
- mailgen - 生成响应式 HTML 电子邮件模版。
-
无头浏览器(Headless Browser)
- playwright - 跨浏览器 Web 自动化工具,Microsoft 发布。
- puppeteer
- cypress
- testcafe
- Nightwatch.js
- Nightmare
-
Git
-
国际化(i18n)
-
其它(Others)
命令行工具
Command line tools and tools used to develop command line applications.
构建工具
-
社区实践(Community Practice)
- Node.js CLI Apps Best Practices - 开发 Node.js 命令行应用的最佳实践。
-
zx - 编写 JavaScript 脚本,而非 Bash 脚本。
-
实用工具(Utils)
- chalk - 终端输出字符串样式工具,支持全部的色彩。
- configstore - 持久化命令行应用的配置。
- minimist - 命令行参数解析器。(npm 官方解析器 nopt)
- commander - 简单的命令行接口。
- yargs - 解析参数,构建交互式命令行程序。
- prompts - 轻量、漂亮的交互式命令行提示。
- inquirer - 交互式命令行。
- shell.js - 基于 Node.js 的 Unix Shell 命令的可移植实现。
- Progress / Loading
- tasuku - 任务运行器,可在终端展示运行状态。
- ora - 终端 spinner 效果。
- progress - 进度条。(⚠️ 不再积极开发)
- cli-progress - 进度条。
- Concurrent / Parallel
- concurrently - 并行执行多个命令。
- npm-run-all - (⚠️ 不再更新)
- wireit - 任务运行器。
- table - 将数组数据打印成字符串表格。
- marked-terminal - 利用 marked 将 Markdown 文件渲染到终端。
- asciichart - 控制台展示折线图。
-
命令行应用开发框架(CLI App Dev)
- Ink - 用 React.js 开发命令行应用。
- Caporal - 全功能命令行应用开发框架。
- oclif - 命令行工具开发框架。
- meow - 命令行应用开发工具包。
- Gluegun - 命令行应用开发工具包。
- Terminal Kit - 编写命令行程序的工具包。
- blessed - 高级终端接口库。
- blessed-contrib - 仪表面板工具库。
-
可执行程序(Executable)
实用工具
- Interpreter
- HTTP 服务器(Static HTTP Server)
- http-server - 可快速启动一个轻量的 http 服务器。
- serve - 轻量的 http 服务器。
- CORS Anywhere - 反向代理服务器。(⚠️ 不再更新)
数据库
Database.
-
Knex.js - SQL 生成器,支持 Node.js 与浏览器环境。
-
mongodb - MongoDB 的 Node.js 驱动,MongoDB 官方发布。
- mongoose - 对象文档映射(ODM),对 mongodb 的封装,提供模型 Schema,API 更简洁、易用。
-
sqlite3 - SQLite 的 Node.js 驱动,异步、非阻塞,非官方发布。
- better-sqlite3 - 比 node-sqlite3 更快更简单的 API。
-
GraphQL - 开源的数据库查询语言。
-
Prisma - 数据库工具套件。
-
PostgreSQL
- PostGraphile - 为已有的 PostgreSQL 数据库提供 GraphQL API 支持。
- pg-promise - PostgreSQL 的 Node.js 接口。
-
对象关系映射(ORM)
- Sequelize - 基于 Promise 的 Node.js ORM 库,支持 Postgres, MySQL, MariaDB, SQLite 和 Microsoft SQL Server。
- TypeORM - 可以运行在所有 JS 技术栈中的 ORM 库,支持主流数据库。
- Objection.js - 基于
Knex.js
构建。 - Bookshelf - 基于
Knex.js
构建。 - mikro-orm - TypeScript ORM 库,支持 MongoDB, MySQL, MariaDB, PostgreSQL 和 SQLite。
-
ioredis - 高性能、全功能的 Redis 客户端。
-
lowdb - 本地 JSON 数据库。
Web Server 框架
Node.js-based server development framework.
-
Express - 非常成熟的 Web 开发框架。
- express-session - Express 中间件,提供 Session-Cookie 机制的支持,官方发布。
- body-parser - Express 中间件,对 request 的 body 进行预处理,官方发布。
- Multer - Express 中间件,处理
multipart/form-data
表单数据,官方发布。 - morgan - Express 中间件,请求日志记录,官方发布。
- Passport.js - 身份验证中间件,可在基于 Express 的 Node.js 框架中使用。
-
Koa - 轻量级、高性能的 Web 框架,Express 团队开发。
-
Restify - 可快速构建 RESTful API 的框架。
-
Fastify - 高性能、低消耗的 Web 框架。
-
NestJs - 基于 Express / fastify 的渐进式 Web 框架。
-
hapi - 注重安全、简洁的 Web 框架。
-
Feathers - 轻量的、面向服务的构建实时 Web 应用和 REST APIs 的框架。
-
Sails.js - 实时的 MVC 框架。
-
Adonis.js - 全栈 MVC 框架。
-
Full stack framework / CRUD App
-
鉴权(Authentication)
- jsonwebtoken - JSON Web Tokens 的 Node.js 实现。
内容管理系统
Content Management System.
桌面端开发
Desktop-side application development framework.
-
系统组件(System Components)
- node-notifier - 跨平台原生通知功能。
-
原生 API(Native)
- node-windows - Windows 平台对 Node.js 脚本(守护程序,事件日志,UAC 等)的支持。
- systeminformation - 获取系统信息。
- node-copy-paste - 访问系统粘贴板。
-
开发框架(Development Framework)
深入探索
Explore the principles behind the technology, the underlying architecture, etc.
引擎/运行时
Engine / Runtime.
- 事件循环(Event Loop)
服务器优雅关机
Graceful server shutdown.
- healthcheck-graceful-shutdown
- Graceful shutdown with Node.js and Kubernetes
- Graceful server shutdown with Node.js and Express
- Building Graceful Node Applications in Docker
文章
Article.
- Write an Open Source JavaScript Library - 如何编写开源 JavaScript 库,并且发布到 npm。
- Setting up multi-platform npm packages - 多平台支持的 npm 包配置。
- Creating ESM-based shell scripts for Unix and Windows with Node.js - 使用 esm 创建 shell 脚本。
- Deepal's Blog Articles on NodeJS - Deepal 的博客文章,Node.js 相关,比较有深度。
- BFF(Backends For Frontends)
- Running CPU-Bound Tasks in Node.js: Introduction to Worker Threads - 在工作线程中运行 CPU 密集型任务。
更多
More other unclassified resources.
- JavaScript Open Source Award - JavaScript 开源项目奖,非官方。
- Testing Library - 包含了众多测试工具项目。
- awesome-nodejs-security - Node.js 安全相关工具。
- NodeBB - 开源论坛软件。