278 lines
11 KiB
HTML
278 lines
11 KiB
HTML
<h1 id="awesome-node-esm">Awesome Node ESM</h1>
|
||
<p><a href="https://awesome.re"><img
|
||
src="https://awesome.re/badge-flat.svg" alt="Awesome" /></a></p>
|
||
<p>A curated list of Node.js modules with native ESM support and
|
||
resources about ES Modules in Node.js.</p>
|
||
<h2 id="contents">Contents</h2>
|
||
<ul>
|
||
<li><a href="#articles">Articles</a></li>
|
||
<li><a href="#tools">Tools</a></li>
|
||
<li><a href="#packages">Packages</a>
|
||
<ul>
|
||
<li><a href="#web-frameworks">Web frameworks</a></li>
|
||
<li><a href="#http">HTTP</a></li>
|
||
<li><a href="#websocket">WebSocket</a></li>
|
||
<li><a href="#template-engines">Template engines</a></li>
|
||
<li><a href="#ssr">SSR</a></li>
|
||
<li><a href="#databases">Databases</a></li>
|
||
<li><a href="#logging">Logging</a></li>
|
||
<li><a href="#testing">Testing</a></li>
|
||
<li><a href="#cli">CLI</a></li>
|
||
<li><a href="#date">Date</a></li>
|
||
<li><a href="#file-system">File system</a></li>
|
||
<li><a href="#utility">Utility</a> (value manipulations)</li>
|
||
<li><a href="#random">Random</a></li>
|
||
<li><a href="#parsing">Parsing</a></li>
|
||
<li><a href="#compression">Compression</a></li>
|
||
<li><a href="#performance">Performance</a></li>
|
||
<li><a href="#ast">AST</a></li>
|
||
<li><a href="#functional-programming">Functional programming</a></li>
|
||
<li><a href="#math">Math</a></li>
|
||
<li><a href="#ethereum">Ethereum</a></li>
|
||
<li><a href="#other">Other</a></li>
|
||
</ul></li>
|
||
</ul>
|
||
<h2 id="articles">Articles</h2>
|
||
<ul>
|
||
<li><a href="https://nodejs.org/api/esm.html">ECMAScript Modules Node.js
|
||
docs</a></li>
|
||
<li><a href="https://byteofdev.com/posts/how-to-use-esm/">How to Use ESM
|
||
on the Web and Node.js</a></li>
|
||
<li><a href="https://2ality.com/2017/09/native-esm-node.html">Using ES
|
||
modules natively in Node.js</a></li>
|
||
<li><a href="https://blog.logrocket.com/es-modules-in-node-today">ES
|
||
Modules in Node today</a></li>
|
||
<li><a
|
||
href="https://kentcdodds.com/blog/super-simple-start-to-es-modules-in-node-js/">Super
|
||
Simple Start to ESModules in Node.js</a></li>
|
||
</ul>
|
||
<h2 id="tools">Tools</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/evanw/esbuild">esbuild</a> - an
|
||
extremely fast JavaScript bundler and minifier.</li>
|
||
<li><a href="https://github.com/egoist/tsup">tsup</a> - bundle your
|
||
TypeScript library with no config, powered by esbuild.</li>
|
||
<li><a href="https://github.com/rollup/rollup">rollup</a> -
|
||
next-generation ES Module bundler.</li>
|
||
<li><a href="https://github.com/ai/dual-publish">dual-publish</a> -
|
||
publish JS project as dual ES modules and CommonJS package to npm</li>
|
||
<li><a href="https://github.com/wessberg/cjstoesm">cjstoesm</a> - tool
|
||
that can transform CommonJS to ESM</li>
|
||
<li><a
|
||
href="https://github.com/antfu/esbuild-node-loader">esbuild-node-loader</a>
|
||
- transpile TypeScript to ESM with Node.js loader.</li>
|
||
<li><a href="https://github.com/lukeed/tsm">tsm</a> - TypeScript Module
|
||
Loader</li>
|
||
</ul>
|
||
<h2 id="packages">Packages</h2>
|
||
<h3 id="web-frameworks">Web frameworks</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/talentlessguy/tinyhttp">tinyhttp</a> -
|
||
tiny web framework as a replacement of Express.</li>
|
||
<li><a href="https://github.com/lukeed/polka">polka</a> (alpha only) -
|
||
micro web server so fast, it’ll make you dance!</li>
|
||
<li><a href="https://github.com/koajs/koa">koa</a> - expressive
|
||
middleware for node.js using ES2017 async functions</li>
|
||
</ul>
|
||
<h3 id="http">HTTP</h3>
|
||
<h4 id="http-clients">HTTP Clients</h4>
|
||
<ul>
|
||
<li><a href="https://github.com/node-fetch/node-fetch">node-fetch</a> -
|
||
light-weight module that brings window.fetch to Node.js</li>
|
||
<li><a href="https://github.com/lukeed/httpie">httpie</a> - a Node.js
|
||
HTTP client as easy as pie!</li>
|
||
</ul>
|
||
<h4 id="api-clients">API Clients</h4>
|
||
<ul>
|
||
<li><a href="https://github.com/wopian/kitsu">kitsu</a> - simple,
|
||
lightweight & framework agnostic JSON:API client</li>
|
||
<li><a href="https://github.com/draftbit/twitter-lite">twitter-lite</a>
|
||
- tiny, full-featured, flexible client / server library for the Twitter
|
||
API</li>
|
||
</ul>
|
||
<h3 id="websocket">WebSocket</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/lukeed/sockette">sockette</a> - tiny
|
||
wrapper around WebSocket that will automatically reconnect if the
|
||
connection is lost!</li>
|
||
</ul>
|
||
<h3 id="middleware">Middleware</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/talentlessguy/milliparsec">milliparsec</a> -
|
||
tiniest Node.js body parser ever</li>
|
||
<li><a href="https://github.com/lukeed/sirv">sirv</a> - an optimized
|
||
middleware & CLI application for serving static files~!</li>
|
||
<li><a href="https://github.com/talentlessguy/tinyws">tinyws</a> - tiny
|
||
WebSocket middleware for Node.js</li>
|
||
<li><a href="https://github.com/tinyhttp/malibu">malibu</a> -
|
||
framework-agnostic CSRF middleware for modern Node.js</li>
|
||
<li><a href="https://github.com/tinyhttp/lru-send">lru-send</a> -
|
||
LRU-based caching middleware for Node.js</li>
|
||
</ul>
|
||
<h3 id="template-engines">Template engines</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/eta-dev/eta">eta</a> - embedded JS
|
||
template engine for Node, Deno, and the browser</li>
|
||
<li><a href="https://github.com/lukeed/tempura">tempura</a> - A light,
|
||
crispy, and delicious template engine</li>
|
||
</ul>
|
||
<h3 id="ssr">SSR</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/preactjs/preact-render-to-string">preact-render-to-string</a>
|
||
- universal rendering for Preact: render JSX and Preact components to
|
||
HTML.</li>
|
||
<li><a
|
||
href="https://github.com/kriasoft/hyperapp-render">hyperapp-render</a> -
|
||
render Hyperapp to an HTML string with SSR and Node.js streaming
|
||
support.</li>
|
||
<li><a href="https://github.com/talentlessguy/hypermdx">hypermdx</a> -
|
||
Markdown enhanced with Hyperapp</li>
|
||
<li><a href="https://github.com/talentlessguy/streamdown">streamdown</a>
|
||
- stream markdown to HTML</li>
|
||
</ul>
|
||
<h3 id="databases">Databases</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/pubkey/rxdb">rxdb</a> - a realtime
|
||
Database for JavaScript Applications.</li>
|
||
</ul>
|
||
<h3 id="logging">Logging</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/logtown/logtown">logtown</a> - simple
|
||
Logging Facade for JavaScript.</li>
|
||
<li><a href="https://gitlab.com/frissdiegurke/oddlog">oddlog</a> -
|
||
high-performance payload focused logging library for node.js.</li>
|
||
<li><a href="https://github.com/maraisr/diary">diary</a> -
|
||
zero-dependency, fast logging library for both Node and Browser.</li>
|
||
<li><a href="https://github.com/gajus/roarr">roarr</a> - JSON logger for
|
||
Node.js and browser.</li>
|
||
</ul>
|
||
<h3 id="testing">Testing</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/lukeed/uvu">uvu</a> - an extremely fast
|
||
and lightweight test runner for Node.js and the browser.</li>
|
||
<li><a href="https://github.com/bearror/oletus">oletus</a> - minimal
|
||
ECMAScript Module test runner</li>
|
||
<li><a href="https://github.com/43081j/hanbi">hanbi</a> - a small
|
||
javascript library for stubbing and spying on methods/functions.</li>
|
||
<li><a href="https://github.com/griffinmyers/wirepig">wirepig</a> - mock
|
||
HTTP and TCP dependencies with real sockets.</li>
|
||
</ul>
|
||
<h3 id="cli">CLI</h3>
|
||
<h4 id="argument-parsing">Argument parsing</h4>
|
||
<ul>
|
||
<li><a href="https://github.com/yargs/yargs">yargs</a> - Command-line
|
||
parser that automatically generates an elegant user-interface.</li>
|
||
</ul>
|
||
<h4 id="colors">Colors</h4>
|
||
<ul>
|
||
<li><a href="https://github.com/jorgebucaran/colorette">colorette</a> -
|
||
color your terminal using pure idiomatic JavaScript.</li>
|
||
<li><a href="https://github.com/lukeed/kleur">kleur</a> - the fastest
|
||
Node.js library for formatting terminal text with ANSI colors~!</li>
|
||
</ul>
|
||
<h3 id="date">Date</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/iamkun/dayjs">dayjs</a> - 2KB immutable
|
||
date library alternative to Moment.js with the same modern API</li>
|
||
<li><a href="https://github.com/lukeed/tinydate">tinydate</a> - a tiny
|
||
(349B) reusable date formatter.</li>
|
||
<li><a href="https://github.com/masbagal/tempe">tempe</a> - Featherlight
|
||
(< 2kB) helper for Javascript date formatting</li>
|
||
<li><a href="https://github.com/xxczaki/light-date">light-date</a> -
|
||
blazing fast & lightweight (157 bytes) date formatting for Node.js
|
||
and the browser.</li>
|
||
</ul>
|
||
<h3 id="file-system">File system</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/bevry/istextorbinary">istextorbinary</a>
|
||
- Check if a file is text or binary.</li>
|
||
<li><a
|
||
href="https://github.com/talentlessguy/tinyhttp/tree/master/packages/dotenv"><span
|
||
class="citation"
|
||
data-cites="tinyhttp/dotenv">@tinyhttp/dotenv</span></a> - A rewrite of
|
||
<a href="https://github.com/motdotla/dotenv">dotenv</a> module.</li>
|
||
</ul>
|
||
<h3 id="utility">Utility</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/lukeed/dequal">dequal</a> - tiny (304B
|
||
to 489B) utility to check for deep equality</li>
|
||
<li><a href="https://github.com/lukeed/klona">klona</a> - tiny (240B to
|
||
507B) and fast utility to “deep clone” Objects, Arrays, Dates, RegExps,
|
||
and more!</li>
|
||
<li><a href="https://github.com/developit/dlv">dlv</a> - Safe deep
|
||
property access in 120 bytes. x = dlv(obj, ‘a.b.x’)</li>
|
||
</ul>
|
||
<h3 id="random">Random</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/lukeed/uuid">uuid</a> - tiny (230B),
|
||
fast, and cryptographically secure UUID (V4) generator for Node and the
|
||
browser</li>
|
||
<li><a href="https://github.com/ai/nanoid">nanoid</a> - Tiny, secure,
|
||
URL-friendly, unique string ID generator.</li>
|
||
</ul>
|
||
<h3 id="parsing">Parsing</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/developit/snarkdown">snarkdown</a> - a
|
||
snarky 1kb Markdown parser written in JavaScript</li>
|
||
</ul>
|
||
<h3 id="compression">Compression</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/mikbry/anzip">anzip</a> - simple async
|
||
unzip library for Node.js</li>
|
||
</ul>
|
||
<h3 id="performance">Performance</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/piscinajs/piscina">piscina</a> - a fast,
|
||
efficient Node.js Worker Thread Pool implementation</li>
|
||
<li><a href="https://github.com/ai/nanodelay">nanodelay</a> - a tiny (25
|
||
bytes) Promise wrapper around setTimeout</li>
|
||
</ul>
|
||
<h3 id="ast">AST</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/acornjs/acorn">acorn</a> - a small,
|
||
fast, JavaScript-based JavaScript parser</li>
|
||
</ul>
|
||
<h3 id="functional-programming">Functional programming</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/facebook/immutable-js">immutable</a> -
|
||
Immutable data collections.</li>
|
||
<li><a href="https://github.com/Ramda/ramda">ramda</a> - practical
|
||
functional Javascript.</li>
|
||
<li><a href="https://github.com/marvinhagemeister/smoldash">smoldash</a>
|
||
- A tiny lodash alternative built for the modern web</li>
|
||
<li><a href="https://github.com/YuriGor/deepdash">deepdash</a> - tree
|
||
traversal library written in Underscore/Lodash fashion</li>
|
||
</ul>
|
||
<h3 id="math">Math</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/josdejong/mathjs">mathjs</a> - An
|
||
extensive math library.</li>
|
||
</ul>
|
||
<h3 id="ethereum">Ethereum</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/talentlessguy/get-ens">get-ens</a> - Get
|
||
text records of an ENS address</li>
|
||
<li><a href="https://github.com/talentlessguy/send-tx">send-tx</a> -
|
||
Sign & send Ethereum transactions</li>
|
||
</ul>
|
||
<h3 id="other">Other</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/Turfjs/turf">turf</a> - a modular
|
||
geospatial engine written in JavaScript</li>
|
||
<li><a href="https://github.com/xxczaki/cashify">cashify</a> -
|
||
lightweight currency conversion library, successor of money.js</li>
|
||
<li><a href="https://github.com/withastro/astro">astro</a> - build
|
||
faster websites with the island architecture</li>
|
||
<li><a
|
||
href="https://github.com/sindresorhus/transliterate">transliterate</a> -
|
||
convert Unicode characters to Latin characters using
|
||
transliteration</li>
|
||
<li><a href="https://github.com/sindresorhus/emittery">emittery</a> -
|
||
simple and modern async event emitter.</li>
|
||
</ul>
|
||
<p><a
|
||
href="https://github.com/talentlessguy/awesome-node-esm">nodeesm.md
|
||
Github</a></p>
|