- Can I Use, Version Compatibility, End Of Life Date, etc
- Libraries
- Example CLI Stacks
- Unsorted
- See Also
- https://caniuse.com/
- https://node.green/
- https://github.com/williamkapke/node-compat-table
-
node.green - Node.js ECMAScript compatibility tables
-
- https://github.com/williamkapke/node-compat-table
- https://compat-table.github.io/compat-table/es6/
- https://github.com/compat-table/compat-table
-
ECMAScript compatibility tables
-
- https://github.com/compat-table/compat-table
- https://endoflife.date/nodejs
- https://github.com/es-tooling/module-replacements
-
module-replacements
-
As part of the community e18e effort, this project provides a collection of module replacements (i.e. possible alternative packages).
We provide two things:
- Manifests (mappings of modules to their possible replacements)
- Documentation for more complex replacements
-
A manifest of JS modules and their more modern/active replacements
- https://github.com/es-tooling/module-replacements#list-of-replacements
-
List of replacements You can find a list of replacements in the modules readme.
- https://github.com/es-tooling/module-replacements/blob/main/docs/modules/README.md
-
Module replacements This is a list of all modules we suggest replacing, along with documentation to suggest alternatives.
-
- https://github.com/es-tooling/module-replacements/blob/main/docs/modules/README.md
-
-
- https://github.com/43081j/you-dont-need-x
-
You (more than likely) don't need X
-
This is your typical "you don't need" repository: a summary of things you may no longer need or that now have more modern replacements.
In this case, we're talking about JS packages which now have native equivalents or much smaller, more modern replacements.
-
Modern and native alternatives to common packages that you may not need anymore.
-
- https://github.com/tinylibs/
-
Tinylibs
-
A place for tiny and minimal libraries
-
The tinylibs org aims to provide lightweight, modern libraries for the JavaScript ecosystem.
-
- https://github.com/unjs/
-
UnJS
-
Unified JavaScript Tools
- https://unjs.io/
-
Unleash JavaScript's Potential with the UnJS Ecosystem
-
Agnostic Excellence: JavaScript Libraries, Tools, and Utilities, Crafted to Elevate Your Coding Journey.
-
A unified JavaScript ecosystem
-
The UnJS Philosophy A robust ecosystem, driven by the UNIX Philosophy, housing purpose-built, high-quality JavaScript utilities, libraries, and tools, upheld by a collaborative community.
-
-
- TODO: Add things like:
- https://github.com/eslint/eslint
-
Find and fix problems in your JavaScript code.
-
- https://github.com/typicode/husky
-
Git hooks made easy
-
- https://github.com/lint-staged/lint-staged
-
Run tasks like formatters and linters against staged git files
-
- etc?
- https://github.com/eslint/eslint
- https://github.com/webpro-nl/knip
-
Find unused files, dependencies and exports in your JavaScript and TypeScript projects. Knip it before you ship it!
-
Knip finds and fixes unused files, dependencies and exports in your JavaScript and TypeScript projects. Less code and dependencies lead to improved performance, less maintenance and easier refactorings.
- Replaces older
depcheck
:- https://github.com/depcheck/depcheck
-
Check your npm module for unused dependencies
-
Note: Depcheck is no longer actively maintained
-
While it has been widely used to identify unused dependencies in JavaScript and TypeScript projects, its lack of updates means it may not work well with modern tooling and frameworks. We strongly recommend switching to knip, a more actively maintained and feature-rich alternative. Knip provides better support for TypeScript, monorepos, and modern build tools, making it a more reliable choice for keeping your project dependencies clean.
-
Check out knip.dev
-
- https://github.com/depcheck/depcheck
-
- https://github.com/es-tooling/eslint-plugin-depend
-
eslint-plugin-depend
-
This is an ESLint plugin to help suggest alternatives to various dependencies.
Primarily, it will help detect dependency tree bloat and redundant polyfills.
-
An ESLint plugin for suggesting optimisations in choice of dependency, native equivalents, etc.
-
- https://github.com/43081j/eslint-plugin-clutter
-
eslint-plugin-clutter
-
ESLint plugin for detecting micro-dependencies and redundant packages.
The JavaScript ecosystem is filled with clutter:
- Micro-packages - one-liners, often with native equivalents you should use instead
- Obsolete packages - packages made obsolete by a better, newer package. NPM should take care of this but not all authors remember to mark their packages as obsolete
- Obsolete packages (native replacements) - packages no longer needed because the platform (e.g. browsers, node, etc.) support the functionality out of the box
Micro-packages are a bad idea, a horrible idea. They are high risk, often untrusted and usually completely unnecessary. Let's get rid of them.
-
- https://github.com/thepassle/eslint-plugin-barrel-files
-
eslint-plugin-barrel-files
-
Barrel files are files that just re-export a bunch of things from other files. If you're using a bundler, bundlers usually apply treeshaking and dead code elimination algorithms to remove any unused code.
In many environments however, like test runners, browsers, CDN environments or server side JavaScript runtimes, treeshaking does not get applied. This means that lots of modules get loaded unnecessarily, which can cause significant performance slowdowns.
-
- https://github.com/stars/0xdevalias/lists/shell-scripts-cli-etc
-
0xdevalias' Starred List - Shell Scripts, CLI, etc
-
- https://github.com/stars/0xdevalias/lists/utilities-etc
-
0xdevalias' Starred List - Utilities, etc
-
- https://nodejs.org/api/util.html
-
The
node:util
module supports the needs of Node.js internal APIs. Many of the utilities are useful for application and module developers as well. To access it:const util = require('node:util');
-
- https://github.com/tapjs/signal-exit
-
signal-exit
When you want to fire an event no matter how a process exits:
- reaching the end of execution.
- explicitly having
process.exit(code)
called. - having
process.kill(pid, sig)
called. - receiving a fatal signal from outside the process
Use
signal-exit
-
- https://github.com/sindresorhus/nano-spawn
-
nano-spawn
-
Tiny process execution for humans β a better
child_process
- https://github.com/sindresorhus/nano-spawn#alternatives
-
nano-spawn's main goal is to be small, yet useful. Nonetheless, depending on your use case, there are other ways to run subprocesses in Node.js.
-
-
- https://github.com/sindresorhus/execa
-
execa
-
Process execution for humans
-
Execa runs commands in your script, application or library. Unlike shells, it is optimized for programmatic usage. Built on top of the
child_process
core module.- https://nodejs.org/api/child_process.html
-
Child process
-
The
node:child_process
module provides the ability to spawn subprocesses in a manner that is similar, but not identical, topopen(3)
-
- https://nodejs.org/api/child_process.html
-
Examples of libraries used by various CLI apps.
- https://github.com/openai/codex/blob/main/codex-cli/package.json
- https://github.com/evanw/esbuild
-
esbuild
-
An extremely fast bundler for the web
-
- https://github.com/TypeStrong/ts-node
-
ts-node
-
TypeScript execution and REPL for node.js, with source map and native ESM support.
-
- https://github.com/sindresorhus/meow
-
meow
-
CLI app helper
-
- https://github.com/vadimdemedes/ink
-
React for interactive command-line apps
-
Ink provides the same component-based UI building experience that React offers in the browser, but for command-line apps. It uses Yoga to build Flexbox layouts in the terminal, so most CSS-like props are available in Ink as well. If you are already familiar with React, you already know Ink.
Since Ink is a React renderer, it means that all features of React are supported. Head over to React website for documentation on how to use it. Only Ink's methods will be documented in this readme.
-
- https://github.com/vadimdemedes/ink-ui
-
Ink UI
-
Collection of customizable UI components for CLIs made with Ink.
-
Ink-redible command-line interfaces made easy
-
- https://github.com/vadimdemedes/ink-testing-library
-
ink-testing-library
-
Utilities for testing Ink apps
-
- https://github.com/chalk/chalk
-
Chalk
-
Terminal string styling done right
-
- https://github.com/chalk/strip-ansi
-
strip-ansi
Strip ANSI escape codes from a string -
Note: Node.js has this built-in now with
stripVTControlCharacters
. The benefit of this package is consistent behavior across Node.js versions and faster improvements. The Node.js version is actually based on this package.- https://nodejs.org/api/util.html#utilstripvtcontrolcharactersstr
-
util.stripVTControlCharacters(str)
-
Added in: v16.11.0
-
- https://nodejs.org/api/util.html#utilstripvtcontrolcharactersstr
- https://github.com/chalk/strip-ansi#related
-
Related
- strip-ansi-cli - CLI for this module
- strip-ansi-stream - Streaming version of this module
- has-ansi - Check if a string has ANSI escape codes
- ansi-regex - Regular expression for matching ANSI escape codes
- chalk - Terminal string styling done right
-
-
- https://github.com/mikaelbr/marked-terminal
-
marked-terminal
-
Custom Renderer for marked allowing for printing Markdown to the Terminal. Supports pretty tables, syntax highlighting for javascript, and overriding all colors and styles.
- https://github.com/markedjs/marked
-
Marked
-
A markdown parser and compiler. Built for speed.
-
-
- https://github.com/sindresorhus/boxen
-
boxen
Create boxes in the terminal
-
- https://github.com/sindresorhus/figures
-
Unicode symbols with fallbacks for older terminals
-
Terminals such as Windows Console Host (and CMD) only support a limited character set
- https://github.com/sindresorhus/figures#figures-1
-
Figures
-
- https://github.com/sindresorhus/figures#other-characters
-
Other characters
If you cannot find the character you're looking for in the table above, please look at this full list of cross-platform terminal characters.
- https://github.com/ehmicky/cross-platform-terminal-characters
-
All the characters that work on most terminals.
-
While ASCII characters display correctly on all terminals, this is not the case of all characters. When building a terminal application or tool, it is common to experience cross-platform issues
-
-
-
- https://github.com/sindresorhus/open
-
open
-
Open stuff like URLs, files, executables. Cross-platform.
- https://github.com/sindresorhus/open#api
-
API
-
It uses the command
open
on macOS,start
on Windows andxdg-open
on other platforms.
-
-
- https://github.com/npm/node-which
-
which
Like the unixwhich
utility.Finds the first instance of a specified executable in the
PATH
environment variable. Does not cache the results, sohash -r
is not needed when thePATH
changes.
-
- https://github.com/ljharb/shell-quote
-
shell-quote
-
Parse and quote shell commands.
-
- https://github.com/sindresorhus/file-type
-
file-type
-
Detect the file type of a file, stream, or data
-
The file type is detected by checking the magic number of the buffer.
This package is for detecting binary-based file formats, not text-based formats like
.txt
,.csv
,.svg
, etc. - https://github.com/sindresorhus/file-type#supported-file-types
-
Supported file types
-
-
- etc?
- https://github.com/evanw/esbuild
- https://github.com/j4k0xb/webcrack/blob/master/packages/webcrack/package.json
- https://github.com/evanw/esbuild
-
esbuild
-
An extremely fast bundler for the web
-
- https://github.com/tj/commander.js
-
Commander.js
-
The complete solution for node.js command-line interfaces.
-
- https://github.com/debug-js/debug
-
debug
-
A tiny JavaScript debugging utility modelled after Node.js core's debugging technique. Works in Node.js and web browsers.
-
- etc?
- https://github.com/evanw/esbuild
- https://github.com/pionxzh/wakaru/blob/main/packages/cli/package.json
- https://github.com/egoist/tsup
-
tsup
-
Bundle your TypeScript library with no config, powered by esbuild.
-
The simplest and fastest way to bundle your TypeScript libraries.
-
- https://github.com/yargs/yargs
-
yargs
the modern, pirate-themed successor to optimist. -
Yargs helps you build interactive command line tools, by parsing arguments and generating an elegant user interface.
-
- https://github.com/bombshell-dev/clack
-
Clack
-
Effortlessly build beautiful command-line apps
-
@clack/core
: unstyled, extensible primitives for CLIs- https://github.com/bombshell-dev/clack/tree/main/packages/core#readme
-
Clack contains low-level primitives for implementing your own command-line applications.
Currently,
TextPrompt
,SelectPrompt
, andConfirmPrompt
are exposed as well as the basePrompt
class.
-
- https://github.com/bombshell-dev/clack/tree/main/packages/core#readme
-
@clack/prompts
: beautiful, ready-to-use CLI prompt components- https://github.com/bombshell-dev/clack/tree/main/packages/prompts#readme
-
@clack/prompts
is an opinionated, pre-styled wrapper around@clack/core
.- π€ 80% smaller than other options
- π Beautiful, minimal UI
- β Simple API
- π§± Comes with text, confirm, select, multiselect, and spinner components
-
- https://github.com/bombshell-dev/clack/tree/main/packages/prompts#readme
- https://www.clack.cc/
-
Building interactive command line applications doesn't have to be so hard.
@clack/core provides
unstyled, feature-rich components designed to be a strong foundation for your custom CLIs.Of course, sometimes you just want to use something well-designed. That's why
@clack/prompts
comes out-of-the-box with beautiful prompts and a straightforward API.
-
-
- https://github.com/alexeyraspopov/picocolors
-
picocolors
-
The tiniest and the fastest library for terminal output formatting with ANSI colors.
-
No dependencies.
-
14 times smaller and 2 times faster than chalk.
-
Used by popular tools like PostCSS, SVGO, Stylelint, and Browserslist.
-
NO_COLOR
friendly. - https://github.com/alexeyraspopov/picocolors#benchmarks
-
Benchmarks
-
-
- https://github.com/sindresorhus/globby
-
globby
-
User-friendly glob matching
-
Based on
fast-glob
but adds a bunch of useful features.
-
- https://github.com/jprichardson/node-fs-extra
-
Node.js:
fs-extra
-
fs-extra
adds file system methods that aren't included in the nativefs
module and adds promise support to thefs
methods. It also usesgraceful-fs
to preventEMFILE
errors. It should be a drop in replacement forfs
. -
Node.js: extra methods for the
fs
object likecopy()
,remove()
,mkdirs()
- https://github.com/jprichardson/node-fs-extra#methods
-
Methods
-
-
- https://github.com/poolifier/poolifier
-
poolifier
-
Fast and small Node.js
worker_threads
and cluster worker pool -
Poolifier is used to perform CPU and/or I/O intensive tasks on Node.js servers, it implements worker pools using worker_threads and cluster Node.js modules.
With poolifier you can improve your performance and resolve problems related to the event loop.
Moreover you can execute your tasks using an API designed to improve the developer experience.
-
- etc?
- https://github.com/egoist/tsup
- https://github.com/jehna/humanify/blob/main/package.json
- https://github.com/privatenumber/tsx
-
tsx
-
TypeScript Execute (
tsx
): The easiest way to run TypeScript in Node.js
-
- https://github.com/privatenumber/pkgroll
-
pkgroll
-
Zero-config package bundler for Node.js + TypeScript
-
pkgroll is a JavaScript package bundler powered by Rollup that automatically builds your package from entry-points defined in package.json. No config necessary!
Write your code in TypeScript/ESM and run pkgroll to get ESM/CommonJS/.d.ts outputs!
-
- https://github.com/tj/commander.js
-
Commander.js
-
The complete solution for node.js command-line interfaces.
-
- https://github.com/motdotla/dotenv
-
dotenv
Dotenv is a zero-dependency module that loads environment variables from a .env file into process.env. Storing configuration in the environment separate from code is based on The Twelve-Factor App methodology.
-
Loads environment variables from
.env
for nodejs projects.
-
- etc?
- https://github.com/privatenumber/tsx
- https://github.com/e18e/ecosystem-issues
-
e18e ecosystem issues
-
A place to keep track of ongoing efforts to improve performance in the JS ecosystem
-
- https://gist.github.com/0xdevalias
- https://github.com/0xdevalias
- Web App Tech Stack Things (0xdevalias' gist)
- Design Systems (0xdevalias' gist)
- Web Extensions / Browser Extensions / Chrome Extensions / etc (0xdevalias' gist)
- Azure serverless functions and related features/patterns/etc (0xdevalias' gist)
- Explore methods for prefixing Prisma generated database record IDs by type (0xdevalias' gist)
- Editor Frameworks and Collaborative Editing/Conflict Resolution Tech (0xdevalias' gist)
- Copy on Write + Event Sourcing for Edit History (0xdevalias' gist)
- My Typesafe/Etc Stack(0xdevalias' gist)