Skip to content

Commit

Permalink
docs: add what/why of this project
Browse files Browse the repository at this point in the history
  • Loading branch information
thepassle committed Jul 20, 2024
1 parent a2809db commit 01e1e10
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,17 @@

This repository aims to provide automated codemods for the modules provided in [module replacements](https://github.com/es-tooling/module-replacements).

## What is this project about?

There are many jokes in the software development ecosystem about the size of `node_modules` and JavaScript dependencies in general, for example dependencies like `is-even`, or `is-odd`. Fortunately, there are many individuals who are working on improving this situation (like for example the [e18e initiative](https://e18e.dev/)), but there are also individuals actively adding more and more unnecessary dependencies to popular projects that get millions of downloads, leading to bloated `node_modules` folders with tons of dependencies.

![nodemodules.webp](Heaviest objects in the world, ranked from lightest to heaviest, starting with the sun, a neutron star, a black hole, and finally node modules)

This project aims to automate the cleanup of these dependencies for projects by implementing codemods to replace them. This will speed up the ecosystem cleanup efforts a lot by automating the process. For those of you who are unsure what codemods are, codemods are automatic transformations that run on your codebase programmatically. What that means is that you give a codemod some input source code, and it will output changed code, like for example cleanup of dependencies.

There are a lot of [packages](https://github.com/es-tooling/module-replacements) to create codemods for. While creating codemods for these packages is not very hard, there is simply _a lot_ of them, so we're looking for contributions! The codemods typically are very small and straightforward to implement; even if you've never written one before. With the help of [codemod.studio](https://codemod.com/studio) and the [contributing](#contributing) instructions down below, you should get up and running in no time. Being able to create codemods is a great skill to have in your developer toolset, but it's also really fun and satisfying to implement one, and at the same time you'll be contributing to a better ecosystem!


## Status

The status of this project is **in development**. There's is a very barebones CLI implemented, mostly just to have something there, and it's also not published to NPM yet, because the name/home of this project is still TBD. The goal of this repository, at the current time, is mainly to gather as many codemods for the packages in [module replacements](https://github.com/es-tooling/module-replacements) or [polyfills](https://github.com/esm-dev/esm.sh/tree/main/server/embed/polyfills/npm) as we can and to have a centralized place where people can [collaborate](#contributing) on those codemods.
Expand Down
Binary file added nodemodules.webp
Binary file not shown.

0 comments on commit 01e1e10

Please sign in to comment.