# e18e > Ecosystem Performance Cleanup, Speedup, Levelup.
One package at a time. ## Table of Contents ### Learn - [Why e18e](/learn.md): An initiative to improve performance and modernize the JavaScript ecosystem. - [Resources](/learn/resources.md): Tools, websites, and resources for improving the JavaScript ecosystem. - [Advocacy](/learn/advocacy.md): Best practices for contributing e18e performance improvements to open source projects. - [Ongoing Projects](/learn/projects.md): A list of ongoing and upcoming projects by the e18e community. ### Performance - [Cleanup](/learn/cleanup.md): Cleaning up dependency trees and modernizing packages across the ecosystem. - [Speedup](/learn/speedup.md): Profiling and improving performance of popular projects across the ecosystem. - [Levelup](/learn/levelup.md): Modern, lighter alternatives to established tools and libraries. ### Documentation - [Community Documentation](/docs.md) - [e18e (Ecosystem Performance) - Publishing Packages](/docs/publishing.md) ### Module Replacements - [Replacements](/docs/replacements.md) ### Tools - [CLI](/docs/cli.md) ### Other - [`lodash` / `underscore`](/docs/replacements/lodash-underscore.md): Modern alternatives for Lodash for array/object manipulation and common programming tasks - [Fetch-based HTTP clients (shared)](/docs/replacements/fetch.md): Shared alternatives and examples for fetch based HTTP clients used across related modules - [Replacements for `@better-auth/cli`](/docs/replacements/better-auth-cli.md): Modern alternative to the @better-auth/cli package for the Better Auth CLI - [Replacements for `@img/colour`](/docs/replacements/img-colour.md): Modern alternatives to the @img/colour package for color parsing and manipulation - [Replacements for `@jsdevtools/ez-spawn`](/docs/replacements/ez-spawn.md): Modern alternatives to the ez-spawn package for spawning child processes - [Replacements for `@typescript/native-preview`](/docs/replacements/typescript-native-preview.md): Modern alternative to the @typescript/native-preview package for the native version of TypeScript - [Replacements for `bcrypt`](/docs/replacements/bcrypt.md): Modern alternatives to the bcrypt package for password hashing - [Replacements for `bluebird` / `q`](/docs/replacements/bluebird-q.md): Modern alternatives to the Bluebird and Q Promise libraries for async control flow in JavaScript - [Replacements for `body-parser`](/docs/replacements/body-parser.md): Modern alternatives to the body-parser package for parsing HTTP request bodies in Node.js servers - [Replacements for `buf-compare`](/docs/replacements/buf-compare.md): Native Node.js alternatives to the buf-compare package for buffer comparison - [Replacements for `buffer-equal-constant-time`](/docs/replacements/buffer-equal-constant-time.md): Native Node.js alternatives to the buffer-equal-constant-time package for safe buffer equality checks - [Replacements for `buffer-equal`](/docs/replacements/buffer-equal.md): Native Node.js alternatives to the buffer-equal package for buffer equality checks - [Replacements for `buffer-equals`](/docs/replacements/buffer-equals.md): Native Node.js alternatives to the buffer-equals package for buffer equality checks - [Replacements for `builtin-modules`](/docs/replacements/builtin-modules.md): Native Node.js alternatives to the builtin-modules package for listing built-in modules - [Replacements for `chalk`](/docs/replacements/chalk.md): Modern alternatives to the chalk package for terminal string styling and colors, with notes on browser console support - [Replacements for `clean-webpack-plugin`](/docs/replacements/clean-webpack-plugin.md): Modern alternatives to the clean-webpack-plugin package - [Replacements for `clipboardy`](/docs/replacements/clipboardy.md): Modern alternatives to the clipboardy package for copy/pasting on Node.js and in the browser - [Replacements for `collection-map`](/docs/replacements/collection-map.md): Native alternatives to the collection-map package - [Replacements for `concat-stream`](/docs/replacements/concat-stream.md): Modern alternatives to the concat-stream package - [Replacements for `core-util-is`](/docs/replacements/core-util-is.md): Native Node.js alternatives to the core-util-is package - [Replacements for `cosmiconfig`](/docs/replacements/cosmiconfig.md): Modern alternatives to the cosmiconfig package - [Replacements for `cpx`](/docs/replacements/cpx.md): Modern alternatives to the cpx package for copying file globs with watch mode - [Replacements for `create-hmac`](/docs/replacements/create-hmac.md): Modern alternatives to the `create-hmac` package for HMAC - [Replacements for `cross-spawn`](/docs/replacements/cross-spawn.md): Modern alternatives to the cross-spawn package for spawning child processes - [Replacements for `crypto-js`](/docs/replacements/crypto-js.md): Modern alternatives to the `crypto-js` package for cryptographic operations - [Replacements for `css-loader`](/docs/replacements/css-loader.md): Modern alternatives to the css-loader package - [Replacements for `cwd`](/docs/replacements/cwd.md): Modern alternatives to the cwd package for resolving project-relative paths - [Replacements for `debug`](/docs/replacements/debug.md): Modern alternatives to the debug package - [Replacements for `deep-equal`](/docs/replacements/deep-equal.md): Modern alternatives to the deep-equal package for deep object comparison - [Replacements for `depcheck`](/docs/replacements/depcheck.md): Modern alternatives to depcheck for analyzing project dependencies and unused code - [Replacements for `desm`](/docs/replacements/desm.md): Native alternatives to the desm package - [Replacements for `detect-package-manager`](/docs/replacements/detect-package-manager.md): Lightweight alternative to detect-package-manager for detecting the package manager with zero dependencies - [Replacements for `dev-null`](/docs/replacements/dev-null.md): Modern alternatives to the dev-null package - [Replacements for `dot-prop`](/docs/replacements/dot-prop.md): Modern alternatives to the dot-prop package for getting, setting, and deleting nested object properties using dot notation - [Replacements for `dotenv`](/docs/replacements/dotenv.md): Native Node.js alternatives to the dotenv package for loading and managing .env files in Node.js - [Replacements for `duplexer`](/docs/replacements/duplexer.md): Modern alternatives to the duplexer package - [Replacements for `emoji-regex`](/docs/replacements/emoji-regex.md): Modern alternatives to the emoji-regex package for emoji detection and matching - [Replacements for `error-stack-parser`](/docs/replacements/error-stack-parser.md): Modern alternatives to error-stack-parser for parsing error stack traces - [Replacements for `eslint-config-airbnb`](/docs/replacements/eslint-config-airbnb.md): Modern, maintained alternative to the eslint-config-airbnb shared config - [Replacements for `eslint-plugin-es`](/docs/replacements/eslint-plugin-es.md): Modern alternatives to the eslint-plugin-es package for ECMAScript feature linting - [Replacements for `eslint-plugin-eslint-comments`](/docs/replacements/eslint-plugin-eslint-comments.md): Modern alternatives to the eslint-plugin-eslint-comments package for ESLint comment linting - [Replacements for `eslint-plugin-import`](/docs/replacements/eslint-plugin-import.md): Modern alternative to eslint-plugin-import, which helps with linting of ES6+ import/export syntax - [Replacements for `eslint-plugin-node`](/docs/replacements/eslint-plugin-node.md): Modern alternatives to the eslint-plugin-node package for Node.js-specific linting rules - [Replacements for `eslint-plugin-react`](/docs/replacements/eslint-plugin-react.md): Modern alternatives to the eslint-plugin-react package for React/JSX-specific linting rules - [Replacements for `eslint-plugin-vitest`](/docs/replacements/eslint-plugin-vitest.md): Modern alternatives to the eslint-plugin-vitest package for Vitest-specific linting rules - [Replacements for `event-stream`](/docs/replacements/event-stream.md): Modern alternatives to the event-stream package - [Replacements for `execa`](/docs/replacements/execa.md): Modern alternatives to the execa package for running child processes - [Replacements for `express`](/docs/replacements/express.md): Modern alternatives to the express package - [Replacements for `extend`](/docs/replacements/extend.md): Native alternatives to the extend package for deep cloning and merging objects - [Replacements for `faker`](/docs/replacements/faker.md): Modern replacements for the unmaintained faker package generating massive amounts of fake (but realistic) data - [Replacements for `fast-glob`](/docs/replacements/fast-glob.md): Modern alternatives to the fast-glob package for fast file system pattern matching - [Replacements for `feather-icons` and `react-feather`](/docs/replacements/feather.md): Modern alternatives to feather packages - [Replacements for `feathers-hooks-common`](/docs/replacements/feathers-hooks-common.md): Modern alternatives to the feathers-hooks-common package for common hooks and utilities in Feathers services - [Replacements for `find-cache-dir`](/docs/replacements/find-cache-dir.md): Modern alternatives to the find-cache-dir package for locating cache directories - [Replacements for `find-cache-directory`](/docs/replacements/find-cache-directory.md): Modern alternatives to the find-cache-directory package for locating cache directories - [Replacements for `find-file-up`](/docs/replacements/find-file-up.md): Modern alternatives to the find-file-up package for finding files by walking up parent directories - [Replacements for `find-pkg`](/docs/replacements/find-pkg.md): Modern alternatives to the find-pkg package for finding package.json files - [Replacements for `find-process`](/docs/replacements/find-process.md): Modern alternatives to the find-process package for looking up running processes - [Replacements for `find-up`](/docs/replacements/find-up.md): Modern alternatives to the find-up package for finding files by walking up parent directories - [Replacements for `fs-extra`](/docs/replacements/fs-extra.md): Modern alternatives to the fs-extra package for working with the file system - [Replacements for `get-stream`](/docs/replacements/get-stream.md): Modern alternatives to the get-stream package - [Replacements for `glob`](/docs/replacements/glob.md): Modern alternatives to the glob package for file pattern matching and globbing - [Replacements for `globby`](/docs/replacements/globby.md): Modern alternatives to the globby package for globbing and .gitignore support - [Replacements for `grapheme-splitter` / `graphemer`](/docs/replacements/graphemer.md): Modern alternatives to the grapheme-splitter and graphemer packages for splitting strings into Unicode grapheme clusters - [Replacements for `graphviz`](/docs/replacements/graphviz.md): Modern alternatives to the graphviz package - [Replacements for `gray-matter`](/docs/replacements/gray-matter.md): Modern alternatives to the gray-matter package for parsing front matter - [Replacements for `gzip-size`](/docs/replacements/gzip-size.md): Native Node.js alternatives to the gzip-size for calculating gzipped size of a string or buffer - [Replacements for `has-yarn`](/docs/replacements/has-yarn.md): Modern alternatives to the has-yarn package for detecting a yarn.lock file - [Replacements for `html-minifier`](/docs/replacements/html-minifier.md): Modern replacement for the html-minifier package for minifying HTML with embedded CSS, JavaScript, and SVG - [Replacements for `http-proxy`](/docs/replacements/http-proxy.md): Modern alternatives to the http-proxy package for HTTP and WebSocket proxying in Node.js - [Replacements for `inherits`](/docs/replacements/inherits.md): Modern alternatives to the inherits package - [Replacements for `invariant`](/docs/replacements/invariant.md): Modern alternatives to the invariant package for runtime assertions - [Replacements for `is-builtin-module`](/docs/replacements/is-builtin-module.md): Native Node.js alternatives to the is-builtin-module package for checking built-in modules - [Replacements for `is-path-in-cwd`](/docs/replacements/is-path-in-cwd.md): Native alternatives to the is-path-in-cwd package for checking whether a path is inside the current working directory - [Replacements for `is-path-inside`](/docs/replacements/is-path-inside.md): Native alternatives to the is-path-inside package for checking whether one path is inside another - [Replacements for `is-utf8`](/docs/replacements/is-utf8.md): Native alternatives to the is-utf8 package for checking whether bytes are valid UTF-8 - [Replacements for `istanbul-lib-coverage`](/docs/replacements/istanbul-lib-coverage.md): Modern alternatives to the istanbul-lib-coverage package - [Replacements for `istanbul-lib-instrument`](/docs/replacements/istanbul-lib-instrument.md): Modern alternatives to the istanbul-lib-instrument package for instrumenting code for coverage - [Replacements for `jQuery`](/docs/replacements/jquery.md): Modern alternatives to the jQuery library for DOM traversal, events, and AJAX - [Replacements for `js-yaml`](/docs/replacements/js-yaml.md): Modern alternatives to js-yaml for YAML parsing and stringifying - [Replacements for `jsonwebtoken`](/docs/replacements/jsonwebtoken.md): Modern alternatives to the jsonwebtoken package for JWT signing and verification - [Replacements for `jsx-ast-utils`](/docs/replacements/jsx-ast-utils.md): Modern alternatives to the jsx-ast-utils package for statically analyzing JSX ASTs - [Replacements for `jszip`](/docs/replacements/jszip.md): Modern alternatives to the jszip package for creating and reading ZIP files - [Replacements for `materialize-css`](/docs/replacements/materialize-css.md): Modern alternatives to materialize-css (Materialize) and modern Material Design UI libraries - [Replacements for `md5`](/docs/replacements/md5.md): Native Node.js alternatives to the md5 package for MD5 hash generation - [Replacements for `micromatch`](/docs/replacements/micromatch.md): Modern alternatives to the micromatch package for glob pattern matching - [Replacements for `mime`](/docs/replacements/mime.md): Lighter alternative to the mime package for looking up MIME types from file extensions - [Replacements for `mississippi`](/docs/replacements/mississippi.md): Modern alternatives to the mississippi package - [Replacements for `mkdirp` / `make-dir`](/docs/replacements/mkdirp.md): Modern alternatives to the mkdirp and make-dir packages for recursively creating directories in Node.js - [Replacements for `mockdate`](/docs/replacements/mockdate.md): Modern alternatives to the mockdate package for mocking time in tests - [Replacements for `Moment.js`](/docs/replacements/moment.md): Modern alternatives to moment.js for date manipulation and formatting - [Replacements for `node-telegram-bot-api`](/docs/replacements/node-telegram-bot-api.md): Modern alternatives to the node-telegram-bot-api package - [Replacements for `npm-check`](/docs/replacements/npm-check.md): Replacements for the npm-check package, for checking unused and outdated dependencies. - [Replacements for `npm-run-all`](/docs/replacements/npm-run-all.md): Modern alternatives to the npm-run-all package for running multiple npm scripts - [Replacements for `object-hash`](/docs/replacements/object-hash.md): Modern alternatives to object-hash for hashing objects and values - [Replacements for `open`](/docs/replacements/open.md): Smaller alternatives to the open package for opening files and URLs - [Replacements for `ora`](/docs/replacements/ora.md): Modern alternatives to the ora package for displaying elegant terminal spinners with status indicators - [Replacements for `pako`](/docs/replacements/pako.md): Modern alternatives to the pako package for zlib, deflate and gzip compression - [Replacements for `path-exists`](/docs/replacements/path-exists.md): Modern alternatives to the path-exists package for checking if a path exists - [Replacements for `path-root` / `path-root-regex`](/docs/replacements/path-root.md): Native alternatives to the path-root and path-root-regex packages for reading the root of a path - [Replacements for `pbkdf2`](/docs/replacements/pbkdf2.md): Native alternatives to the pbkdf2 package for secure, iterative password-based key derivation - [Replacements for `pkg-dir`](/docs/replacements/pkg-dir.md): Modern alternatives to the pkg-dir package for finding package root directories - [Replacements for `portal-vue`](/docs/replacements/portal-vue.md): Modern alternatives to the `portal-vue` package for making portals in Vue applications - [Replacements for `portfinder`](/docs/replacements/portfinder.md): Modern alternatives to the portfinder package for finding an available port - [Replacements for `qs`](/docs/replacements/qs.md): Modern alternatives to the qs package for parsing and serializing query strings - [Replacements for `react-helmet`](/docs/replacements/react-helmet.md): Modern alternatives to the react-helmet package - [Replacements for `read-package-up`](/docs/replacements/read-package-up.md): Modern alternatives to the read-package-up package for reading package.json files up the directory tree - [Replacements for `read-pkg-up`](/docs/replacements/read-pkg-up.md): Modern alternatives to the read-pkg-up package for reading package.json files up the directory tree - [Replacements for `read-pkg`](/docs/replacements/read-pkg.md): Native Node.js alternatives to the read-pkg package for reading package.json files - [Replacements for `readable-stream`](/docs/replacements/readable-stream.md): Modern alternatives to the readable-stream package for working with streaming data in Node.js - [Replacements for `resolve`](/docs/replacements/resolve.md): Modern alternatives to the resolve package - [Replacements for `rimraf`](/docs/replacements/rimraf.md): Native Node.js alternatives to the rimraf package for recursive directory removal - [Replacements for `rollup-plugin-babel`](/docs/replacements/rollup-plugin-babel.md): Modern alternative to rollup-plugin-babel for using Babel with Rollup - [Replacements for `rollup-plugin-commonjs`](/docs/replacements/rollup-plugin-commonjs.md): Modern alternatives to the rollup-plugin-commonjs package for bundling CommonJS modules with Rollup - [Replacements for `rollup-plugin-node-resolve`](/docs/replacements/rollup-plugin-node-resolve.md): Modern alternative to rollup-plugin-node-resolve for resolving Node.js modules in Rollup - [Replacements for `rollup-plugin-terser`](/docs/replacements/rollup-plugin-terser.md): Modern alternatives to the rollup-plugin-terser package for minifying Rollup output - [Replacements for `semver`](/docs/replacements/semver.md): Modern alternatives to the semver package - [Replacements for `shortid`](/docs/replacements/shortid.md): Modern, secure alternatives to the shortid package for generating URL‑friendly unique IDs - [Replacements for `slice-ansi`](/docs/replacements/slice-ansi.md): Modern alternatives for the slice-ansi package for slicing terminal strings - [Replacements for `sort-object`](/docs/replacements/sort-object.md): Modern alternatives to the sort-object package for sorting object keys - [Replacements for `source-map-explorer`](/docs/replacements/source-map-explorer.md): Modern alternatives to the source-map-explorer package for exploring bundle sourcemaps - [Replacements for `split`](/docs/replacements/split.md): Native Node.js alternatives to the split package for splitting stream by lines - [Replacements for `sqlite3`](/docs/replacements/sqlite3.md): Modern alternatives to the sqlite3 package for working with SQLite in Node.js - [Replacements for `stream-buffers`](/docs/replacements/stream-buffers.md): Modern alternatives to the stream-buffers package for buffering and generating streams in Node.js - [Replacements for `string-width`](/docs/replacements/string-width.md): Modern alternatives to the string-width package for measuring the visual width of a string - [Replacements for `strip-ansi`](/docs/replacements/strip-ansi.md): Native Node.js alternatives to the strip-ansi package for removing ANSI escape codes from strings - [Replacements for `tar-fs`](/docs/replacements/tar-fs.md): Lighter alternative to the tar-fs package for packing and extracting tar archives on the filesystem - [Replacements for `temp` / `tempy`](/docs/replacements/tempy.md): Modern alternatives to the temp and tempy packages for creating temporary files and directories - [Replacements for `through`](/docs/replacements/through.md): Modern alternatives to the through package - [Replacements for `timezone-support`](/docs/replacements/timezone-support.md): Native alternatives to the timezone-support package for listing, resolving and converting time zones - [Replacements for `tokml`](/docs/replacements/tokml.md): Modern replacements for the tokml package for converting GeoJSON to KML - [Replacements for `traverse`](/docs/replacements/traverse.md): Modern alternative to the traverse package to traverse and transform objects by visiting every node on a recursive walk - [Replacements for `tsc`](/docs/replacements/tsc.md): Modern alternatives to the tsc package for the TypeScript compiler - [Replacements for `tsup`](/docs/replacements/tsup.md): Modern alternative to tsup for bundling TypeScript libraries - [Replacements for `tweetnacl`](/docs/replacements/tweetnacl.md): Native Web Crypto alternatives to tweetnacl for signatures, key exchange, hashing, and random bytes - [Replacements for `uri-js`](/docs/replacements/uri-js.md): Modern alternatives to uri-js for RFC 3986 URI parsing, resolving, and normalization - [Replacements for `utf8`](/docs/replacements/utf8.md): Modern alternatives to the utf8 package for UTF-8 encoding and decoding - [Replacements for `uuidv4`](/docs/replacements/uuidv4.md): Native alternatives to the uuidv4 package for UUID v4 generation - [Replacements for `vue3-markdown-it`](/docs/replacements/vue3-markdown-it.md): Modern alternatives to the vue3-markdown-it package for rendering markdown in Vue - [Replacements for `wait-for-expect`](/docs/replacements/wait-for-expect.md): Replace wait-for-expect with built-in assertion retries in Vitest or node:test - [Replacements for `wellknown`](/docs/replacements/wellknown.md): Modern replacements for the wellknown package, a WKT parser and stringifier - [Replacements for `wrap-ansi`](/docs/replacements/wrap-ansi.md): Modern replacement for the wrap-ansi package for wrapping terminal strings (including ANSI-colored output) - [Replacements for `xmldom`](/docs/replacements/xmldom.md): Modern alternatives to the xmldom package for XML DOM parsing and serialization - [Replacements for `yaml-ast-parser`](/docs/replacements/yaml-ast-parser.md): Modern alternatives to yaml-ast-parser for parsing YAML into an AST - [Replacements for argument parsers](/docs/replacements/parseargs.md): Modern alternatives to CLI argument parsing packages using Node.js built-in util.parseArgs - [Replacements for CLI builders](/docs/replacements/cli-builders.md): Modern alternatives to packages for building CLI applications - [Replacements for deep merge packages](/docs/replacements/deep-merge.md): Modern alternatives to packages for deep merging objects - [Sponsors](/sponsor.md): Information about our sponsorships and how to get involved. - [TypeScript schema validation (shared)](/docs/replacements/schema-validation.md): Modern alternatives for TypeScript schema validation