Skip to content

Instantly share code, notes, and snippets.

@0xdevalias
Last active April 20, 2025 08:40
Show Gist options
  • Save 0xdevalias/04d533bd914115564e426fe84bded11b to your computer and use it in GitHub Desktop.
Save 0xdevalias/04d533bd914115564e426fe84bded11b to your computer and use it in GitHub Desktop.
CLI app tech stack things

CLI App Tech Stack Things

Table of Contents

Can I Use, Version Compatibility, End Of Life Date, etc

Libraries

Modern Module Replacements, Tiny Libs, etc

module-replacements

You Don't Need X

  • 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.

Tinylibs

  • 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.

UnJS

  • 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.

Linting, Unused Dependencies, etc

Unsorted

knip

  • 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

eslint-plugin-depend

  • 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.

eslint-plugin-clutter

  • 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.

eslint-plugin-barrel-files

  • 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.

Unsorted

Example CLI Stacks

Examples of libraries used by various CLI apps.

NodeJS

OpenAI Codex

Webcrack

Wakaru

Humanify

Unsorted

See Also

My Other Related Deepdive Gist's and Projects

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment