Awesome Node.js
Node.jsを扱う資料や関連プロジェクトをまとめたAwesomeリストです。
目次
- 公式
- パッケージ
- 実験的
- コマンドラインアプリ
- 関数型プログラミング
- HTTP
- デバッグ/プロファイリング
- ログ
- コマンドラインユーティリティ
- ビルドツール
- ハードウェア
- テンプレート
- Webフレームワーク
- 文書
- ファイルシステム
- 制御フロー
- ストリーム
- リアルタイム
- 画像
- テキスト
- 数値
- 数学
- 日付
- URL
- データ検証
- 解析
- 人間向け表現
- 圧縮
- ネットワーク
- データベース
- テスト
- セキュリティ
- ベンチマーク
- 縮小ツール
- 認証
- 認可
- メール
- ジョブキュー
- Node.js管理
- クロスプラットフォーム統合
- 自然言語処理
- プロセス管理
- 自動化
- AST
- 静的サイトジェネレーター
- コンテンツ管理システム
- フォーラム
- ブログ
- ユニーク
- シリアライズ
- その他
- パッケージマネージャー
- 資料
- 関連リスト
公式
パッケージ
実験的
- webtorrent - Node.jsとブラウザーで動作するストリーミングTorrentクライアントです。
- peerflix - ストリーミングTorrentクライアントです。
- ipfs - すべてのコンピューティングデバイスを同じファイルシステムで接続することを目指す分散ファイルシステムです。
- stackgl - browserifyとnpm上に構築された、WebGL向けのオープンなソフトウェアエコシステムです。
- peerwiki - Wikipedia全体をBitTorrentで配信します。
- peercast - Torrent動画をChromecastへストリーミングします。
- BitcoinJS - 明快で読みやすく、実績のあるBitcoinライブラリです。
- Bitcore - 純粋かつ高機能なBitcoinライブラリです。
- PDFKit - PDF生成ライブラリです。
- turf - モジュール式の地理空間処理・解析エンジンです。
- webcat - GitHubの秘密鍵・公開鍵による認証を使い、WebRTC経由でWeb上にP2Pパイプを構築します。
- NodeOS - npmを基盤とする最初のオペレーティングシステムです。
- YodaOS - AIオペレーティングシステムです。
- Brain.js - 機械学習フレームワークです。
- Pipcook - 機械学習パイプラインを構築するためのフロントエンドアルゴリズムフレームワークです。
- Cytoscape.js - グラフ理論(ネットワーク)のモデリングと解析を行います。
- js-git - GitのJavaScript実装です。
- xlsx - 純粋なJavaScriptで実装されたExcelスプレッドシートの読み書きライブラリです。
- isomorphic-git - Gitの純粋なJavaScript実装です。
コマンドラインアプリ
- np -
npm publishをより使いやすくします。 - npm-name - npmでパッケージ名が利用可能か確認します。
- gh-home - 現在のディレクトリにあるリポジトリのGitHubページを開きます。
- npm-home - パッケージのnpmページを開きます。
- trash -
rmより安全にファイルを削除します。 - speed-test - インターネット接続速度とpingを測定します。
- pageres - Webサイトのスクリーンショットを撮影します。
- cpy - ファイルをコピーします。
- vtop - 見やすいグラフを備えた、改良版のtopです。
- empty-trash - ごみ箱を空にします。
- is-up - Webサイトが稼働しているか確認します。
- is-online - インターネットへ接続できるか確認します。
- public-ip - 公開IPアドレスを取得します。
- clipboard-cli - ターミナルでクリップボードへのコピーと貼り付けを行います。
- XO - JavaScript Happiness Styleに基づく厳格なコードスタイルを適用します。
- ESLint - JavaScript向けのプラグイン可能なリンターツールです。
- David - パッケージのnpm依存関係が古くなっている場合に通知します。
- http-server - 設定不要のシンプルなコマンドラインHTTPサーバーです。
- Live Server - ライブリロード機能を備えた開発用HTTPサーバーです。
- bcat - コマンド出力をWebブラウザーへパイプします。
- normit - ターミナルで音声合成付きのGoogle翻訳を利用します。
- fkill - クロスプラットフォームでプロセスを簡単に終了します。
- pjs - パイプ処理可能なJavaScriptを使い、ターミナルから素早くフィルター、マップ、リデュースを実行します。
- license-checker - アプリケーションの依存関係に適用されるライセンスを確認します。
- browser-run - ブラウザー環境でコードを簡単に実行します。
- tmpin - ファイル入力を受け付けるCLIアプリへ標準入力対応を追加します。
- wallpaper - デスクトップの壁紙を変更します。
- pen - 好みのエディターからブラウザーでMarkdownをライブプレビューします。
- dark-mode - macOSのダークモードを切り替えます。
- Jsome - 色とインデントを設定してJSONを見やすく表示します。
- mobicon - モバイルアプリのアイコンを生成します。
- mobisplash - モバイルアプリのスプラッシュ画面を生成します。
- diff2html-cli - Gitのdiffから見やすいHTMLを生成します。
- trymodule - ターミナルでnpmパッケージを試用します。
- jscpd - ソースコード内のコピー&ペーストを検出します。
- atmo - サーバー側APIのモックを作成します。
- auto-install - コードを書いている間に依存関係を自動インストールします。
- cost-of-modules - 処理を遅くしている依存関係を特定します。
- localtunnel - ローカルホストを外部へ公開します。
- svg-term-cli - ターミナルセッションをSVGとして共有します。
- gtop - ターミナル向けのシステム監視ダッシュボードです。
- themer - エディター、ターミナル、壁紙、Slackなどのテーマを生成します。
- carbon-now-cli - ターミナルからコードを美しい画像へ変換します。
- cash-cli - 170種類の通貨を相互変換します。
- taskbook - コマンドラインでタスク、ボード、メモを管理します。
- discharge - 静的WebサイトをAmazon S3へ簡単にデプロイします。
- npkill - 古くて容量の大きいnode_modulesフォルダーを見つけて削除します。
関数型プログラミング
- lodash - 一貫性、カスタマイズ性、性能、豊富な機能を備えたユーティリティライブラリで、Underscore.jsをより高速に改良しています。
- immutable - イミュータブルなデータコレクションです。
- Ramda - 自動カリー化と引数順の反転による柔軟な関数合成を重視し、データを変更しないユーティリティライブラリです。
- Mout - 必要なモジュールや関数だけを読み込めるため、余分なオーバーヘッドを避けられるユーティリティライブラリです。
- RxJS - さまざまな種類のデータを変換、合成、照会するための関数型リアクティブライブラリです。
- Kefir.js - 高性能かつ少ないメモリ使用量を重視したリアクティブライブラリです。
HTTP
- got - 組み込みの
httpモジュールを使いやすくするインターフェースです。 - undici - 依存関係なしで一から実装された高性能HTTPクライアントです。
- ky-universal - Fetchを基盤とするユニバーサルHTTPクライアントです。
- node-fetch - Node.jsで
window.fetchを利用できるようにします。 - axios - ブラウザーでも動作するPromiseベースのHTTPクライアントです。
- superagent - HTTPリクエストライブラリです。
- http-fake-backend - JSONファイルやJavaScriptオブジェクトの内容を設定可能なルートで提供し、偽のバックエンドを構築します。
- cacheable-request - ネイティブHTTPリクエストへRFC準拠のキャッシュ対応を追加します。
- gotql - gotを基盤とするGraphQLリクエストライブラリです。
- global-agent - 環境変数で設定できるグローバルHTTP/HTTPSプロキシエージェントです。
- smoke - 記録機能を備えたファイルベースのHTTPモックサーバーです。
- purest - RESTクライアントです。
デバッグ/プロファイリング
- debug - 小型のデバッグユーティリティです。
- why-is-node-running - Node.jsプロセスが終了しない原因を調べます。
- njsTrace - コードを計測・トレースし、すべての関数呼び出し、引数、戻り値、各関数の実行時間を表示します。
- vstream - ストリームのパイプラインを検査できる、計測可能なストリーム用ミックスインです。
- stackman - エラーのスタックトレースへコード抜粋などの情報を追加します。
- locus - 実行時にすべての変数へアクセスできるREPLを起動します。
- 0x - フレームグラフを使ったプロファイリングを行います。
- ctrace - システムコールとシグナルを整形して詳しくトレースします。
- leakage - メモリリークのテストを記述できます。
- llnode - クラッシュしたNode.jsプロセスのオブジェクトを検査・分析する事後解析ツールです。
- thetool - CPU、メモリなどのプロファイルをChrome DevToolsで扱える形式で取得します。
- swagger-stats - API呼び出しを追跡し、性能、健全性、利用状況の指標を監視します。
- NiM - DevToolsのデバッグワークフローを管理します。
- dats - 依存関係を持たない小型のStatsDクライアントです。
ログ
- pino - Bunyanに着想を得た非常に高速なロガーです。
- winston - 複数の出力先に対応する非同期ログライブラリです。
- console-log-level - ログレベルと独自プレフィックスに対応した、極めてシンプルなロガーです。
- storyboard - エンドツーエンドで階層的かつリアルタイムに色付きログとストーリーを表示します。
- consola - コンソールロガーです。
コマンドラインユーティリティ
- chalk - ターミナル文字列を適切に装飾します。
- meow - CLIアプリの作成を支援します。
- yargs - 洗練されたユーザーインターフェースを自動生成するコマンドラインパーサーです。
- ora - 洗練されたターミナル用スピナーです。
- get-stdin - 標準入力を簡単に扱えます。
- log-update - ターミナルの直前の出力を上書きしてログを更新し、進捗バーやアニメーションなどを描画できます。
- Ink - Reactを使って対話型コマンドラインアプリを構築します。
- listr2 - ターミナル向けのタスクリストです。
- conf - アプリやモジュールの設定を簡単に管理します。
- ansi-escapes - ターミナルを操作するためのANSIエスケープコードを提供します。
- log-symbols - 各種ログレベルに対応する色付き記号を提供します。
- figures - Windows CMD向けフォールバックを備えたUnicode記号を提供します。
- boxen - ターミナルに枠を描画します。
- terminal-link - ターミナルにクリック可能なリンクを作成します。
- terminal-image - ターミナルに画像を表示します。
- string-width - 文字列の表示幅、つまり表示に必要な列数を取得します。
- cli-truncate - 文字列をターミナル上の指定幅へ切り詰めます。
- blessed - curses風のライブラリです。
- Inquirer.js - 対話型のコマンドラインプロンプトです。
- yn - yes/no形式の値を解析します。
- cli-table3 - 見やすいUnicode表を作成します。
- drawille - Unicode点字文字を使ってターミナルへ描画します。
- ascii-charts - ターミナルにASCII棒グラフを描画します。
- progress - 柔軟なASCII進捗バーです。
- insight - 利用状況をGoogle Analyticsへ匿名送信し、ツールの使われ方を把握できるようにします。
- cli-cursor - CLIカーソルの表示を切り替えます。
- cli-columns - UnicodeとANSIに対応したテキスト一覧を列形式で表示します。
- cfonts - コンソール向けの魅力的なASCIIフォントです。
- multispinner - 複数のスピナーを同時かつ個別に制御します。
- omelette - シェルの自動補完を支援します。
- cross-env - クロスプラットフォームで環境変数を設定します。
- shelljs - 移植可能なUnixシェルコマンドを提供します。
- sudo-block - アプリがroot権限で実行されるのを防ぎます。
- sparkly -
▁▂▃▅▂▇形式のスパークラインを生成します。 - Bit - リポジトリ間で小さなモジュールやコンポーネントを作成、保守、検索、利用します。
- gradient-string - ターミナル出力へ美しい色のグラデーションを適用します。
- oclif - パーサー、自動文書生成、テスト、プラグインを備えたCLIフレームワークです。
- terminal-size - ターミナルウィンドウのサイズを確実に取得します。
- Cliffy - 対話型CLIを構築するためのフレームワークです。
- zx - JavaScriptでシェルスクリプトを記述します。
ビルドツール
- parcel - 非常に高速で設定不要のWebアプリバンドラーです。
- webpack - ブラウザー向けにモジュールとアセットをまとめます。
- rollup - 次世代のES2015モジュールバンドラーです。
- gulp - 設定よりコードを重視する、高速なストリーミングビルドシステムです。
- Broccoli - 定数時間での再ビルドと簡潔なビルド定義に対応する、高速で信頼性の高いアセットパイプラインです。
- Brunch - シンプルな宣言的設定、高速な増分コンパイル、明確なワークフローを備えたフロントエンドWebアプリ用ビルドツールです。
- FuseBox - webpack、JSPM、SystemJSの能力を組み合わせ、TypeScriptを標準でサポートする高速ビルドシステムです。
- pkg - Node.jsプロジェクトを実行可能ファイルとしてパッケージ化します。
- Vite - ホットモジュール置換と静的アセットのバンドルに対応するフロントエンドビルドツールです。
ハードウェア
- johnny-five - Firmataを基盤とするArduinoフレームワークです。
- serialport - シリアルポートの読み書きを行います。
- usb - USBライブラリです。
- i2c-bus - I2Cシリアルバスへアクセスします。
- onoff - GPIOへのアクセスと割り込み検出を提供します。
- spi-device - SPIシリアルバスへアクセスします。
- pigpio - Raspberry Piで高速なGPIO、PWM、サーボ制御、状態変更通知、割り込み処理を提供します。
- gps - GPS受信機を扱うためのNMEAパーサーです。
- modbus-serial - MODBUS-RTU(シリアルおよびTCP)の純粋なJavaScript実装です。
テンプレート
- marko - テンプレートをCommonJSモジュールへコンパイルし、ストリーミング、非同期レンダリング、独自タグに対応するHTMLベースのテンプレートエンジンです。
- nunjucks - 継承や非同期制御などに対応する、jinja2に着想を得たテンプレートエンジンです。
- handlebars.js - ヘルパーや高度なブロックなどの強力な機能を追加したMustacheテンプレートの上位互換です。
- EJS - シンプルで方針を押し付けないテンプレート言語です。
- Pug - Hamlの影響を強く受けた高性能テンプレートエンジンです。
Webフレームワーク
- Fastify - 高速でオーバーヘッドの少ないWebフレームワークです。
- Next.js - サーバーレンダリング対応のユニバーサルJavaScript Webアプリ向けミニマルフレームワークです。
- Nuxt.js - サーバーレンダリング対応Vue.jsアプリ向けのミニマルフレームワークです。
- Hapi - アプリケーションとサービスを構築するためのフレームワークです。
- Micro - 非同期処理を取り入れたミニマルなマイクロサービスフレームワークです。
- Koa - Expressの開発チームが設計した、WebアプリとAPIのための、より小さく表現力と堅牢性に優れた基盤です。
- Express - 単一ページ、複数ページ、ハイブリッドWebアプリの構築に必要な堅牢な機能を提供するWebアプリケーションフレームワークです。
- Feathers - Expressの思想を受け継いだマイクロサービスフレームワークです。
- LoopBack - REST APIを作成し、バックエンドのデータソースへ簡単に接続できる高機能フレームワークです。
- Meteor - データベースをあらゆる場所で利用し、データを通信路上で扱う、非常にシンプルな純粋JavaScript製Webフレームワークです。awesome-meteorも参照してください。
- Restify - 正しく設計されたREST Webサービスを構築できます。
- ThinkJS - ES2015以降、WebSocket、REST APIに対応するフレームワークです。
- ActionHero - TCPソケット、WebSocket、HTTPクライアント向けに再利用可能でスケーラブルなAPIを構築します。
- seneca - マイクロサービスを作成するためのツールキットです。
- AdonisJs - 依存性注入とIoCコンテナーを堅牢な基盤として構築された、Node.js向けの本格的なMVCフレームワークです。
- Moleculer - 高速で高機能なマイクロサービスフレームワークです。
- Nest - 効率的でスケーラブルなサーバーサイドアプリを構築するための、Angularに着想を得たフレームワークです。
- TypeGraphQL - クラスとデコレーターを使い、TypeScriptでGraphQL APIを作成するためのモダンなフレームワークです。
- Tinyhttp - Expressに似た、モダンで高速なWebフレームワークです。
- Marble.js - TypeScriptとRxJSを基盤にサーバーサイドアプリを構築する関数型リアクティブフレームワークです。
- Lad - 元Express TCメンバー兼Koaメンバーが開発した、Web、API、ジョブ、プロキシサーバーを統合するフレームワークです。
- Ts.ED - Express.jsまたはKoa.js上でサーバーサイドアプリを構築する、直感的なTypeScriptフレームワークです。
- Hono - 小型で高速なWebフレームワークです。
文書
- documentation.js - ES2015以降とFlowアノテーションに対応するAPI文書ジェネレーターです。
- Docco - コメントとコードを並べて表示するHTML文書を生成します。
- JSDoc - JavaDocやPHPDocに似たAPI文書ジェネレーターです。
- Docusaurus - ReactとMarkdownを利用し、翻訳とバージョン管理機能を備えた文書サイトジェネレーターです。
ファイルシステム
- del - globを使ってファイルやフォルダーを削除します。
- globby - 複数パターンに対応するファイルglob検索です。
- chokidar -
fs.watchとfs.watchFileのイベントを安定化し、macOSではネイティブのfseventsも利用するファイルシステム監視ツールです。 - find-up - 親ディレクトリを上へ辿ってファイルを検索します。
- proper-lockfile - プロセス間およびマシン間で利用できるロックファイルユーティリティです。
- load-json-file - JSONファイルを読み込んで解析します。
- write-json-file - JSONを文字列化し、ファイルへアトミックに書き込みます。
- fs-write-stream-atomic -
fs.createWriteStream()と同様のAPIでアトミックに書き込みます。 - filenamify - 文字列を有効なファイル名へ変換します。
- istextorbinary - ファイルがテキストかバイナリか判定します。
- fs-jetpack - 日常的な利用のしやすさを重視して再設計されたファイルシステムAPIです。
- fs-extra -
fsモジュールへ追加メソッドを提供します。 - package-directory - npmパッケージのルートディレクトリを検索します。
- filehound - ファイルシステム検索向けの柔軟で流暢なインターフェースです。
- move-file - デバイスをまたぐ場合もファイルを移動できます。
- tempy - ランダムな一時ファイルまたは一時ディレクトリのパスを取得します。
制御フロー
- Promises
- Observables
- RxJS - リアクティブプログラミングを提供します。
- observable-to-promise - ObservableをPromiseへ変換します。
- More…
- Streams
- Highland.js - 標準JavaScriptとNode風ストリームだけを使い、同期・非同期コードを簡単に管理します。
ストリーム
- get-stream - ストリームを文字列またはバッファーとして取得します。
- from2 -
through2に着想を得たReadableStream用の便利なラッパーです。 - into-stream - バッファー、文字列、配列、オブジェクトをストリームへ変換します。
- duplexify - 書き込み可能ストリームと読み込み可能ストリームを一つのstreams2デュプレックスストリームへ統合します。
- pumpify - ストリームの配列を一つのデュプレックスストリームへ結合します。
- peek-stream - 解析方法を決める前に先頭行を確認できる変換ストリームです。
- binary-split - 改行または任意の区切り文字で分割するストリームです。
- byline - 非常にシンプルな行単位ストリームリーダーです。
- first-chunk-stream - ストリームの最初のチャンクを変換します。
- pad-stream - ストリームの各行へパディングを追加します。
- multistream - 複数のストリームを一つへ結合します。
- readable-stream - コアに含まれるStreams2とStreams3実装のミラーです。
- through2-concurrent - オブジェクトストリームを並行して変換します。
リアルタイム
- µWebSockets - 高いスケーラビリティを持つWebSocketサーバー・クライアントライブラリです。
- Socket.io - イベントベースの双方向リアルタイム通信を実現します。
- Faye - Bayeuxプロトコルを基盤とするリアルタイムのクライアント・サーバーメッセージバスです。
- SocketCluster - 複数のCPUコアで動作できる、スケーラブルなHTTPおよびWebSocketエンジンです。
- Primus - 特定モジュールへの依存を避けるための、リアルタイムフレームワーク抽象化層です。
- deepstream.io - スケーラブルなリアルタイムマイクロサービスフレームワークです。
- Kalm - 低レベルのソケットルーター兼ミドルウェアフレームワークです。
- MQTT.js - TCP/IP上で利用するPub/Sub型メッセージングプロトコルMQTTのクライアントです。
- rpc-websockets - WebSocket上のJSON-RPC 2.0実装です。
- Aedes - 任意のストリームサーバー上で動作する最小構成のMQTTサーバーです。
画像
- sharp - JPEG、PNG、WebP、TIFF画像をリサイズする最速のモジュールです。
- image-type - 画像の種類を検出します。
- image-dimensions - 画像の寸法を取得します。
- lwip - ImageMagickを必要としない軽量な画像処理ツールです。
- pica - 純粋なJavaScriptで高品質かつ高速なLanczos3リサイズを提供し、ピクセル化を避けたい場合にcanvasのdrawImage()を置き換えます。
- jimp - 純粋なJavaScriptで画像を処理します。
- qrcode - QRコードとバーコードを生成します。
- ImageScript - WebAssemblyで性能を高めたJavaScript画像処理ライブラリです。
テキスト
- iconv-lite - 文字エンコーディングを変換します。
- string-length - 補助平面文字を正しく数え、ANSIエスケープコードを無視して文字列の実際の長さを取得します。
- camelcase - ダッシュ、ドット、アンダースコア、空白で区切られた文字列をcamelCaseへ変換します(foo-bar → fooBar)。
- escape-string-regexp - 正規表現の特殊文字をエスケープします。
- splice-string -
Array#spliceのように文字列の一部を削除または置換します。 - indent-string - 文字列の各行をインデントします。
- strip-indent - 文字列の各行から先頭の空白を除去します。
- detect-indent - コードのインデントを検出します。
- he - HTMLエンティティをエンコード・デコードします。
- i18n-node - 動的なJSONストレージを備えたシンプルな翻訳モジュールです。
- babelfish - 複数形を非常に簡単な構文で扱える国際化ライブラリです。
- matcher - シンプルなワイルドカード照合を行います。
- unhomoglyph - 視覚的に似たUnicode文字を正規化します。
- i18next - 国際化フレームワークです。
- nanoid - 小型で安全かつURLに適した一意の文字列IDを生成します。
- StegCloak - 秘密情報を文字列内へ目立たない形で隠します。
数値
- random-int - ランダムな整数を生成します。
- random-float - ランダムな浮動小数点数を生成します。
- unique-random - 連続して重複しない乱数を生成します。
- round-to - 数値を指定した小数桁へ丸めます(
1.234→1.2)。
数学
- ndarray - 多次元配列を提供します。
- mathjs - 多機能な数学ライブラリです。
- math-clamp - 数値を指定範囲内へ制限します。
- algebra - 代数構造を提供します。
- multimath - WebAssemblyとJavaScriptで高速な画像演算を構築するためのコアです。
日付
- Luxon - 日付と時刻を扱うためのライブラリです。
- date-fns - モダンな日付ユーティリティです。
- Day.js - Moment.jsの代替となるイミュータブルな日付ライブラリです。
- dateformat - 日付を整形します。
- tz-format - タイムゾーン付きで日付を整形します(
2015-11-30T10:40:35+01:00)。 - cctz - 日付の高速な解析、整形、タイムゾーン変換を提供します。
URL
- normalize-url - URLを正規化します。
- humanize-url - URLを人が読みやすい表記へ変換します(https://sindresorhus.com → sindresorhus.com)。
- url-unshort - 短縮URLを展開します。
- speakingurl - 文字列を翻字してスラッグを生成します。
- linkify-it - Unicodeを完全にサポートするリンクパターン検出器です。
- url-pattern - URLなどの文字列を、正規表現より簡単なパターンで照合します。
- embedza - oEmbed、Open Graph、メタタグの情報を使い、URLからHTML断片や埋め込みを生成します。
データ検証
- joi - JavaScriptオブジェクト向けのオブジェクトスキーマ記述言語兼バリデーターです。
- is-my-json-valid - コード生成によって非常に高速に動作するJSON Schemaバリデーターです。
- property-validator - Expressでプロパティを簡単に検証します。
- schema-inspector - JSON APIのサニタイズと検証を行います。
- ajv - v5、v6、v7提案に対応する高速なJSON Schemaバリデーターです。
- Superstruct - JavaScriptとTypeScriptでデータを検証するための、シンプルで合成可能な仕組みです。
- yup - オブジェクトスキーマを検証します。
- zod - 静的型推論を備えたTypeScriptファーストのスキーマ検証ライブラリです。
解析
- remark - プラグインで機能を拡張できるMarkdownプロセッサーです。
- markdown-it - CommonMarkへ完全対応し、拡張と構文プラグインを備えたMarkdownパーサーです。
- parse5 - 高速で多機能かつ仕様準拠のHTMLパーサーです。
- @parcel/css - Rustで実装されたCSSパーサー、変換器、縮小ツールです。
- strip-json-comments - JSONからコメントを除去します。
- strip-css-comments - CSSからコメントを除去します。
- parse-json - より分かりやすいエラーを表示してJSONを解析します。
- URI.js - URLを変更・操作します。
- JSONStream - JSON.parseとstringifyをストリーミング処理します。
- neat-csv - 高速なCSVパーサーで、上記ライブラリ向けのコールバックインターフェースを提供します。
- csv-parser - 他の実装より高速であることを目指すストリーミングCSVパーサーです。
- PEG.js - 優れたエラー報告を備えた高速パーサーを生成するシンプルなパーサージェネレーターです。
- x-ray - Webスクレイピングユーティリティです。
- nearley - JavaScript向けのシンプルで高速かつ高機能な解析ツールです。
- binary-extract - JSON全体を解析せず、バッファーから値を抽出します。
- Stylecow - モダンCSSを解析・操作・変換して全ブラウザーへ対応させます。プラグインで拡張できます。
- js-yaml - 非常に高速なYAMLパーサーです。
- xml2js - XMLをJavaScriptオブジェクトへ変換します。
- Jison - BisonやYaccの系譜を持つ、扱いやすいJavaScriptパーサージェネレーターです。
- google-libphonenumber - 電話番号を解析、整形、保存、検証します。
- ref - バッファー内の構造化バイナリデータを読み書きします。
- xlsx-populate - Excel XLSXファイルを読み書きします。
- Chevrotain - JavaScript向けの非常に高速で多機能なパーサー構築ツールキットです。
- fast-xml-parser - XMLを検証・解析します。
人間向け表現
- pretty-bytes - バイト数を人が読みやすい文字列へ変換します(
1337→1.34 kB)。 - pretty-ms - ミリ秒を人が読みやすい文字列へ変換します(
1337000000→15d 11h 23m 20s)。 - ms - 小型のミリ秒変換ユーティリティです。
- pretty-error - エラー表示から不要な情報を減らします。
- read-art - 任意のページから読みやすい本文を抽出します。
圧縮
- yazl - ZIPファイルを作成します。
- yauzl - ZIPファイルを展開します。
- Archiver - ZIPとTARに対応する、アーカイブ生成用のストリーミングインターフェースです。
- pako - zlib(deflate、inflate、gzip)を純粋なJavaScriptへ高速に移植した実装です。
- tar-stream - ストリーミングtarパーサー兼ジェネレーターです。tar-fsも参照してください。
ネットワーク
- get-port - 利用可能なポートを取得します。
- ipify - 公開IPアドレスを取得します。
- getmac - コンピューターのMACアドレスを取得します。
- DHCP - DHCPクライアント兼サーバーです。
- netcat - Netcatの純粋なJavaScript移植です。
データベース
- Drivers
- PostgreSQL - 純粋なJavaScript実装とネイティブlibpqバインディングを備えたPostgreSQLクライアントです。
- Redis - Redisクライアントです。
- LevelUP - LevelDBクライアントです。
- MySQL - MySQLクライアントです。
- couchdb-nano - CouchDBクライアントです。
- Aerospike - Aerospikeクライアントです。
- Couchbase - Couchbaseクライアントです。
- MongoDB - MongoDBドライバーです。
- ODM / ORM
- Sequelize - PostgreSQL、SQLite、MySQLなど複数のSQL方言に対応するORMです。
- Bookshelf - Backbone.js風に設計されたPostgreSQL、MySQL、SQLite3向けORMです。
- Mongoose - 洗練されたMongoDBオブジェクトモデリングを提供します。
- Waterline - データストアに依存せず、一つ以上のデータベースとのやり取りを大幅に簡素化します。
- OpenRecord - PostgreSQL、MySQL、SQLite3、RESTfulデータストア向けの、ActiveRecordに似たORMです。
- pg-promise - Promiseを使ってネイティブSQLを扱うPostgreSQLフレームワークです。
- slonik - 厳格な型、詳細なログ、アサーションを備えたPostgreSQLクライアントです。
- Objection.js - SQLクエリビルダーKnex上に構築された軽量ORMです。
- TypeORM - PostgreSQL、MariaDB、MySQL、SQLiteなどに対応するORMです。
- MikroORM - Data Mapper、Unit of Work、Identity Mapパターンを採用し、MongoDB、PostgreSQL、MySQL、SQLiteに対応するTypeScript ORMです。
- Prisma - PostgreSQL、MySQL、SQLiteに対応し、自動生成される型安全なTypeScriptクエリビルダーを提供するモダンなデータベースアクセス手段です。
- Drizzle ORM - PostgreSQLなど各種データベースに対応するTypeScript ORMです。
- Query builder
- Knex - 柔軟性、移植性、使いやすさを重視したPostgreSQL、MySQL、SQLite3向けクエリビルダーです。
- Other
- NeDB - JavaScriptで実装された組み込み永続データベースです。
- Lowdb - Lodashを利用する小型JavaScriptデータベースです。
- Keyv - 複数のバックエンドに対応するシンプルなキーバリューストレージです。
- Finale - Sequelizeモデル向けのRESTfulエンドポイントを生成します。
- database-js - JDBC風の接続で複数データベースを扱うラッパーです。
- Mongo Seeding - JavaScriptとJSONファイルからMongoDBデータベースへデータを投入します。
- @databases - SQLインジェクションの危険を避けながら、プレーンSQLでPostgreSQL、MySQL、SQLite3を照会します。
- pg-mem - テスト向けのインメモリーPostgreSQLインスタンスです。
テスト
- AVA - 先進的なテストランナーです。
- Mocha - 非同期テストを簡単かつ楽しくする多機能テストフレームワークです。
- nyc - Istanbulを基盤とし、サブプロセスにも対応するコードカバレッジツールです。
- tap - TAPテストフレームワークです。
- tape - TAPを出力するテストハーネスです。
- power-assert - 標準のassertインターフェースを通じて詳しいアサーションメッセージを提供します。
- Mochify - Browserify、Mocha、PhantomJS、WebDriverを使ったTDDを支援します。
- trevor - バージョンを手動で切り替えたりTravis CIへプッシュしたりせず、複数のNode.jsバージョンでテストを実行します。
- loadtest - 自動化用APIを備えたWebアプリケーション負荷テストツールです。
- Sinon.JS - テスト用のスパイ、スタブ、モックを提供します。
- navit - ブラウザーテストのスクリプト作成を簡素化するPhantomJS/SlimerJSラッパーです。
- Nock - HTTPのモックと期待値を提供します。
- intern - コードテスト用スタックです。
- toxy - 障害シナリオやネットワーク条件を模擬できる改変可能なHTTPプロキシです。
- hook-std - 標準出力と標準エラー出力をフックして変更します。
- testen - NVMを使い、複数のNode.jsバージョンでローカルにテストを実行します。
- Nightwatch - Selenium WebDriverを基盤とする自動UIテストフレームワークです。
- WebdriverIO - WebDriverプロトコルを基盤とする自動テストツールです。
- Jest - 手間なく使えるJavaScriptテストフレームワークです。
- Vitest - Viteを基盤とする高速なユニットテストフレームワークです。
- TestCafe - ブラウザーを自動テストします。
- abstruse - 継続的インテグレーションサーバーです。
- CodeceptJS - エンドツーエンドテストを提供します。
- Puppeteer - ヘッドレスChromeを操作します。
- Playwright - 一つのAPIでヘッドレスChromium、WebKit、Firefoxを操作します。
- nve - 任意のコマンドを複数のNode.jsバージョンでローカルに実行します。
- axe-core - Web UI自動テスト向けのアクセシビリティエンジンです。
- testcontainers-node - 一般的なデータベース、Seleniumブラウザー、Dockerコンテナーで動作する任意のソフトウェアについて、軽量で使い捨て可能なインスタンスを提供します。
セキュリティ
- upash - あらゆるパスワードハッシュアルゴリズムを統一APIで扱います。
- themis - 保存データ、認証付きデータ交換、通信保護、認証など、一般的な暗号化方式を使いやすくする多言語フレームワークです。
- GuardRails - プルリクエストへセキュリティ上のフィードバックを提供するGitHubアプリです。
- rate-limiter-flexible - ブルートフォース攻撃とDDoS攻撃から保護します。
- crypto-hash - 非同期かつノンブロッキングでハッシュを計算します。
- jose-simple - JOSE(JSON Object Signing and Encryption)標準を使ってデータを暗号化・復号します。
ベンチマーク
- Benchmark.js - 高分解能タイマーに対応し、統計的に有意な結果を返すベンチマークライブラリです。
縮小ツール
- babel-minify - Babelツールチェーンを基盤とし、ES2015以降を認識する縮小ツールです。
- UglifyJS2 - JavaScript縮小ツールです。
- clean-css - CSS縮小ツールです。
- minimize - HTML縮小ツールです。
- imagemin - 画像縮小ツールです。
認証
- Passport - シンプルで邪魔にならない認証ミドルウェアです。
- Grant - Express、Koa、Hapi、Fastify、AWS Lambda、Azure、Google Cloud、VercelなどでOAuthプロバイダーを利用できます。
認可
- CASL - UIとAPIの両方で利用できる同型の認可ライブラリです。
- node-casbin - ACL、RBAC、ABACなどのアクセス制御モデルに対応する認可ライブラリです。
メール
- Nodemailer - メール処理を素早く実装できます。
- emailjs - 任意のSMTPサーバーを使い、添付ファイル付きのテキスト/HTMLメールを送信します。
- email-templates - 独自のメールテンプレートを作成、プレビュー、送信します。
- MJML - レスポンシブメール作成の負担を減らすために設計されたマークアップ言語です。
- Forward Email - オープンソースでセルフホスト可能なメールサービスです。
ジョブキュー
- bull - 永続的なジョブ・メッセージキューです。
- agenda - MongoDBを基盤とするジョブスケジューラーです。
- idoit - 高度なジョブ制御を備えたRedisベースのジョブキューエンジンです。
- node-resque - Redisベースのジョブキューです。
- rsmq - Redisベースのメッセージキューです。
- bee-queue - 高性能なRedisベースのジョブキューです。
- RedisSMQ - リアルタイム監視を備えた、シンプルで高性能なRedisメッセージキューです。
- sqs-consumer - 定型コードなしでAmazon Simple Queue Service(SQS)ベースのアプリを構築します。
- better-queue - Redisを利用できない場合に適した、シンプルで効率的なジョブキューです。
- bullmq - 永続的なジョブ・メッセージキューです。
- bree - Worker Thread、cron、日付、人が読みやすい構文に対応するジョブスケジューラーです。
- graphile-worker - 高性能なPostgreSQLジョブキューです。
Node.js管理
- n - Node.jsのバージョンを管理します。
- nave - Node.js向けの仮想環境を提供します。
- nodeenv - Pythonのvirtualenvと互換性のあるNode.js仮想環境です。
- nvm for Windows - Windows向けのNode.jsバージョン管理ツールです。
- nodenv - Rubyのrbenvに似た、自動バージョン切り替え対応のNode.jsバージョン管理ツールです。
- fnm - Rustで実装されたクロスプラットフォームのNode.jsバージョン管理ツールです。
クロスプラットフォーム統合
- napi-rs - Node-APIを介し、Rustでコンパイル済みNode.jsアドオンを構築するフレームワークです。
- Neon - 安全で高速なネイティブNode.jsモジュールをRustで記述するためのバインディングです。
- Edge.js - Windows、macOS、Linuxで.NETとNode.jsのコードを同じプロセス内で実行します。
- DotNetJS - .NET相互運用層を使ってNode.jsから.NETライブラリを利用します。
自然言語処理
- retext - 拡張可能な自然言語処理システムです。
- franc - テキストの言語を検出します。
- leven - レーベンシュタイン距離アルゴリズムで二つの文字列の差を測定します。
- natural - 自然言語処理機能を提供します。
- nlp.js - エンティティ抽出、感情分析、言語自動識別などを備えたボットを構築します。
プロセス管理
- PM2 - 高度なプロセスマネージャーです。
- nodemon - アプリの変更を監視し、サーバーを自動的に再起動します。
- node-mac - スクリプトをネイティブMacデーモンとして実行し、コンソールアプリへ記録します。
- node-linux - スクリプトをネイティブシステムサービスとして実行し、syslogへ記録します。
- node-windows - スクリプトをネイティブWindowsサービスとして実行し、イベントビューアーへ記録します。
- supervisor - スクリプトのクラッシュ時、または
*.jsファイルの変更時に再起動します。 - Phusion Passenger - Nginxへ直接統合できる使いやすいプロセスマネージャーです。
自動化
- robotjs - マウスとキーボードを制御し、画面を読み取るデスクトップ自動化ツールです。
- nut.js - 画像照合機能とJest連携を備えた、クロスプラットフォームのネイティブGUI自動化・テストフレームワークです。
AST
- Acorn - 小型で高速なJavaScriptパーサーです。
- babel-parser - Babelで使用されているJavaScriptパーサーです。
静的サイトジェネレーター
- DocPad - 動的機能と大規模なプラグインエコシステムを備えた静的サイトジェネレーターです。
- docsify - 静的なHTMLファイルを生成しないMarkdown文書サイトジェネレーターです。
- Charge - JSXとMDXを使う、方針が明確で設定不要の静的サイトジェネレーターです。
コンテンツ管理システム
- KeystoneJS - ExpressとMongoDB上に構築されたCMS兼Webアプリケーションプラットフォームです。
- ApostropheCMS - ExpressとMongoDB上に構築され、直感的なフロントエンド編集と管理を重視するコンテンツ管理システムです。
- Strapi - 高機能なAPIを構築するためのコンテンツ管理フレームワーク(ヘッドレスCMS)です。
- Factor - Vue.jsダッシュボードフレームワーク兼ヘッドレスCMSです。
- AdminBro - すべてのリソースにCRUD機能を備えた管理パネルを自動生成します。
- Graphweaver - CMS兼ヘッドレスGraphQL APIです。
フォーラム
- nodeBB - モダンWeb向けのフォーラムプラットフォームです。
ブログ
ユニーク
- cows - ASCIIアートの牛を取得します。
- superb - 「素晴らしい」に類する単語を取得します。
- cat-names - 人気の猫の名前を取得します。
- dog-names - 人気の犬の名前を取得します。
- superheroes - スーパーヒーローの名前を取得します。
- supervillains - スーパーヴィランの名前を取得します。
- cool-ascii-faces - 面白いASCII顔文字を取得します。
- cat-ascii-faces -
₍˄·͈༝·͈˄₎◞ ̑̑ෆ⃛ (=ↀωↀ=)✧ (^・o・^)ノ”。 - nerds - Harry Potter、Star Wars、Pokémonなどのマニアックな題材からデータを取得します。
シリアライズ
- snappy - GoogleのSnappy圧縮ライブラリ向けネイティブバインディングです。
- protobuf - Protocol Buffersの実装です。
- compactr - Compactrプロトコルの実装です。
その他
- execa -
child_processをより使いやすくします。 - cheerio - サーバー向けに設計された、高速で柔軟かつ軽量なjQueryコア実装です。
- open - Webサイト、ファイル、実行可能ファイルなどを開きます。
- hasha - バッファー、文字列、ストリーム、ファイルのハッシュを簡単に取得します。
- dot-prop - ドット区切りのパスを使ってネストしたオブジェクトのプロパティを取得します。
- onetime - 関数を一度だけ実行します。
- mem - 同じ入力に対する呼び出し結果をキャッシュし、連続する関数呼び出しを高速化します。
- strip-bom - 文字列、バッファー、ストリームからUTF-8のバイトオーダーマーク(BOM)を除去します。
- os-locale - システムのロケールを取得します。
- ssh2 - SSH2クライアント・サーバーモジュールです。
- adit - SSHトンネリングを簡単にします。
- file-type - バッファーからファイル形式を検出します。
- Bottleneck - スロットリングを簡単にするレートリミッターです。
- webworker-threads - ネイティブスレッドを使う軽量なWeb Worker API実装です。
- clipboardy - システムクリップボードへアクセスしてコピーと貼り付けを行います。
- node-pre-gyp - Node.js C++アドオンをバイナリとして公開・インストールしやすくします。
- opencv - デファクトスタンダードのコンピュータービジョンライブラリOpenCV向けバインディングです。
- dotenv - .envファイルから環境変数を読み込みます。
- semver - セマンティックバージョンを解析します。
- nodegit - Git向けネイティブバインディングです。
- json-strictify - データ損失や無限ループを避けて値を安全にJSONへシリアライズします。
- jsdom - HTMLとDOMのJavaScript実装です。
- @sindresorhus/is - 値の型を検査します。
- env-dot-prop - ドット区切りのパスでprocess.envのネストしたプロパティを取得、設定、削除します。
- node-video-lib - MP4・FLV動画を扱い、HLSストリーミング用のMPEG-TSチャンクを作成する純粋なJavaScriptライブラリです。
- basic-ftp - FTP/FTPSクライアントです。
- cashify - 通貨を変換します。
- genepi - C++コードからネイティブNode.jsアドオンを自動生成します。
- husky - Gitフックスクリプトを作成します。
- patch-package - npm依存関係への修正を作成して保持します。
- editly - 宣言的な動画編集APIです。
- wild-wild-path - ワイルドカードと正規表現に対応するオブジェクトプロパティパスです。
- uint8array-extras - Uint8ArrayとBufferを扱うための便利なユーティリティです。
パッケージマネージャー
- npm - 既定のパッケージマネージャーです。
- pnpm - ディスク容量を効率的に利用するパッケージマネージャーです。
- yarn - 代替パッケージマネージャーです。
- bun - JavaScript・TypeScriptアプリ向けのオールインワンツールキットです。
資料
チュートリアル
- Node.js Best Practices - 複数言語で提供されている、評価の高いNode.jsベストプラクティス資料の要約・厳選集です。
- Nodeschool - 対話型レッスンでNode.jsを学べます。
- The Art of Node - Node.jsの入門資料です。
- module-best-practices - 新しいnpmモジュールを作成する際の優れた実践方法を紹介します。
- The Node Way - 保守可能なモジュール、スケーラブルなアプリ、読みやすいコードを書くためのNode.jsベストプラクティスと指針を体系化しています。
- You Don’t Know Node.js - Node.jsの主要機能と非同期JavaScriptの入門資料です。
- Portable Node.js guide - 移植可能なクロスプラットフォームNode.jsコードを書くための実践ガイドです。
- Build a real web app with no frameworks - 少数のシンプルなライブラリとNode.jsコアモジュールを使い、実際に動くWebアプリを構築・デプロイする動画チュートリアル/ライブ配信集です。
検索
- npms - 多数の指標でパッケージ品質を詳しく分析する高機能な検索サービスです。
- npm addict - npmパッケージを毎日紹介します。
記事
- 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
ニュースレター
- Node Weekly - Node.jsのニュースと記事を毎週まとめて届けるメールニュースレターです。
動画
- Introduction to Node.js with Ryan Dahl
- Hands on with Node.js
- V8 Garbage Collector - V8のガベージコレクターについて解説します。
- 10 Things I Regret About Node.js by Ryan Dahl - Node.jsの作者が、その制約の一部を振り返る洞察に富んだ講演です。
- Mastering REST APIs in Node.js: Zero-To-Hero - Node.jsでREST APIを構築する方法を学ぶ動画講座です。
- Make a vanilla Node.js REST API - Expressなどのフレームワークを使わずにREST APIを構築します。
- Google I/O 2009 - V8: High Performance JavaScript Engine - V8アーキテクチャの基礎とJavaScript実行の最適化方法を解説します。
- Google I/O 2012 - Breaking the JavaScript Speed Limit with V8 - V8がJavaScript実行を最適化する仕組みを解説します。
- Google I/O 2013 - Accelerating Oz with V8: Follow the Yellow Brick Road to JavaScript Performance - V8の知識を使ってアプリのボトルネックを検出し、性能を最適化する方法を解説します。
- Node.js Internal Architecture | Ignition, Turbofan, Libuv - V8とlibuvを中心に、Node.jsの内部動作を解説します。
- Introduction to libuv: What’s a Unicorn Velociraptor? -
libuvのアーキテクチャ、スレッドプール、イベントループをソースコードとともに解説します。 - libuv Cross platform asynchronous i/o - 実際にスレッドを使う箇所など、
libuvのアーキテクチャを詳しく解説します。 - You Don’t Know Node - ForwardJS San Francisco - V8、libuv、イベントループ、モジュール、ストリーム、クラスターに関するクイズを通してNode.js内部を解説します。
書籍
- 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
ブログ
- Node.js blog
- webapplog.com - 『Practical Node.js』『Pro Express.js』の著者Azat MardanによるNode.jsとJavaScriptのブログ記事です。
講座
- Learn to build apps and APIs with Node.js - Wes Bosによる動画講座です。
- Real Time Web with Node.js
- Learn and Understand Node.js
- Node.js Full Stack Developer Course
チートシート
- Express.js
- Stream FAQs - ページネーションやイベントなど、ストリームに関するよくある質問へ回答します。
- Strong Node.js - Node.js Webサービスのソースコードをセキュリティ分析するためのチェックリストです。
ツール
- OctoLinker - GitHub上のpackage.json、.js、.jsx、.coffee、.mdファイル内にある依存関係へリンクを付けるChrome拡張機能です。
- npm-hub - リポジトリのREADME下部へnpm依存関係を表示するChrome拡張機能です。
- RunKit - 任意のWebサイトへNode.js環境を埋め込みます。
- github-npm-stats - GitHub上にnpmのダウンロード統計を表示するChrome拡張機能です。
- npm semver calculator - semver範囲に一致するパッケージバージョンを視覚的に確認します。
- CodeSandbox - オンラインIDE兼プロトタイピング環境です。
- Amplication - 完全に動作するアプリを自動生成します。
- RunJS - デスクトップ向けJavaScriptプレイグラウンドです。
コミュニティ
その他
- nodebots - JavaScriptで動くロボットです。
- node-module-boilerplate - Node.jsモジュールの作成を開始するためのボイラープレートです。
- modern-node - Jest、Prettier、ESLint、Standardを使ってNode.jsモジュールを作成するためのツールキットです。
- generator-nm - Node.jsモジュールの雛形を生成します。
- Microsoft Node.js Guidelines - MicrosoftプラットフォームでNode.jsを扱うためのヒント、テクニック、資料です。
- Module Requests & Ideas - 欲しいJavaScriptモジュールをリクエストしたり、モジュールのアイデアを探したりできます。
- v8-perf - V8およびNode.jsの性能に関するメモと資料です。
関連リスト
- awesome-npm - npmを利用するための資料とヒントです。
- awesome-cross-platform-nodejs - クロスプラットフォームコードの作成とテストに役立つ資料です。