ES Tooling
July 22, 2024
The e18e initiative has seen huge growth since launch. We've seen hundreds of performance contributions upstream to popular projects, and the creation of many community-led tools.
A notable example of this is the ES Tooling community GitHub organization.
If you haven't yet encountered e18e, read more in the guide and join the community.
A home for e18e-focused tools
Over the last few months, many of us have collaborated and connected through the e18e community. The ES tooling organization is a result of that - a place for us to store and own forks, tools, and other code bases we're working on together.
A few popular projects that were running solo until now, have come together to create this:
While e18e exists to connect us all and provide a space to collaborate, it doesn't exist to own the projects coming out of the initiative. That is where projects like es-tooling, unjs and more come in to play.
We expect es-tooling will be one of many community-led orgs with an e18e focus.
Ecosystem cleanup
One of the projects which kicked much of this initiative off - the ecosystem cleanup project has now moved into the ES Tooling organization to allow better visibility and maintenance.
The cleanup project exists primarily as an issue tracker, tracking:
- Footprint reduction in popular packages
- Missing forks or alternatives that could be worked on
- Performance improvements in popular packages
If you want to help out, this project is a good starting point to find some open issues.
Read more at the ecosystem cleanup project.
Module replacements
The module replacements project is a community-led list of popular npm packages and their possible replacements.
Often, these replacements are native, or much faster and more modern packages. If you know of a good alternative to something, get involved and add to the list!
Read more at the module replacements project.
Module replacements codemods
The module replacements codemods project is an effort to automate the ecosystem cleanup. Taking the module replacements as input, we aim to have automated codemods for all packages listed. This way other tooling can use these codemods to perform transformations on projects automatically. For example, a codemod for the is-even
package would result in:
Before:
const isEven = require('is-even')
console.log(isEven(2))
After:
console.log(2 % 2 === 0)
We'll also be looking into implementing a CLI around these codemods so people can run them on their own projects, or so they can run them on other projects and create pull requests to them, hopefully simplifying the amount of effort it takes to replace dependencies.
You can find more information about the module replacements codemods repository. If you're interested in seeing the before/after states of the codemods, take a look at the test fixtures. Every codemod has one or more before/after examples available.
What's next?
If you own an e18e-focused project, or need a home for a new project, get involved!