---
url: /learn/resources.md
description: Tools, websites, and resources for improving the JavaScript ecosystem.
---

# Resources

## Efforts

|                                                                  | Description                                                            |
| ---------------------------------------------------------------- | ---------------------------------------------------------------------- |
| [es-tooling](https://github.com/es-tooling/)                     | A collection of tooling for the JS ecosystem                           |
| [JS ecosystem cleanup](https://github.com/e18e/ecosystem-issues) | Efforts to provide a cleaner dependency tree in the JS ecosystem       |
| [Tinylibs](https://github.com/tinylibs)                          | A place for tiny and minimal libraries                                 |
| [unjs](https://github.com/unjs/)                                 | Purpose-built, high-quality JavaScript utilities, libraries, and tools |

## Tools

|                                                                                                  | Description                                                                                                                                     |
| ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| [arethetypeswrong](https://arethetypeswrong.github.io/)                                          | Analyzes npm packages for issues with TypeScript types, particularly ESM-related module resolution problems                                     |
| [Biome's noBarrelFile](https://biomejs.dev/linter/rules/no-barrel-file/)                         | Biome plugin to avoid barrel files                                                                                                              |
| [Biome's noReExportAll](https://biomejs.dev/linter/rules/no-re-export-all/)                      | Biome plugin to avoid re-export all                                                                                                             |
| [Biome's noRestrictedDependencies](https://biomejs.dev/linter/rules/no-restricted-dependencies/) | Biome rule to suggest modern alternatives for outdated or heavy dependencies                                                                    |
| [@e18e/eslint-plugin](https://github.com/e18e/eslint-plugin)                                     | Official ESLint plugin for modernizing code and suggesting dependency alternatives                                                              |
| [eslint-plugin-barrel-files](https://github.com/thepassle/eslint-plugin-barrel-files)            | ESLint plugin to avoid barrel files                                                                                                             |
| [howfat](https://github.com/megahertz/howfat)                                                    | Shows how much space a package takes up on disk including dependencies                                                                          |
| [Knip](https://knip.dev)                                                                         | Finds and fixes unused files, dependencies and exports in JavaScript and TypeScript projects                                                    |
| [Package Size Calculator](https://github.com/TheDevMinerTV/package-size-calculator)              | CLI to calculate the size of a package after removing/replacing dependencies, or calculating the difference of two versions of the same package |
| [publint](https://publint.dev/)                                                                  | Lints npm packages to ensure wide compatibility across environments like Vite, Webpack, Rollup, and Node.js                                     |
| [unplugin-purge-polyfills](https://github.com/danielroe/unplugin-purge-polyfills)                | Unplugin to replace package imports with native code                                                                                            |

## Websites

|                                              | Description                                                                                                                        |
| -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| [bundlejs](https://bundlejs.com/)            | In-browser bundler that shows package size with tree-shaking support, handles CSS and external files, and works with multiple CDNs |
| [bundlephobia](https://bundlephobia.com/)    | Finds the cost of adding npm packages to your bundle                                                                               |
| [DepTree](https://deptree.rschristian.dev/)  | Visualizes a project's dependencies and highlights which of those dependencies could be replaced                                   |
| [Ecosyste.ms](https://packages.ecosyste.ms/) | An open API service providing package, version and dependency metadata of many open source software ecosystems and registries      |
| [node-modules.dev](https://node-modules.dev) | Online tool to visualize your node\_modules, inspect dependencies, and analyze package structures with WebContainer support         |
| [npmgraph](https://npmgraph.js.org/)         | Visually displays a graph of a project's dependencies to get an idea of a projects module graph                                    |
| [packagephobia](https://packagephobia.com/)  | Reports the "publish size" and "install size" of npm packages before installation, helping you evaluate disk space impact          |
| [pkg-size.dev](https://pkg-size.dev/)        | Explores npm packages with fresh installs to show actual size, dependencies, and helps optimize your node\_modules                  |
| [snyk](https://snyk.io/)                     | Finds and fixes vulnerabilities in open source dependencies                                                                        |
| [socket.dev](https://socket.dev/)            | Security-focused tool that analyzes dependencies for vulnerabilities                                                               |
| [npmx.dev](https://npmx.dev/)                | A better browser for the npm registry with e18e recommendations and advice                                                         |

## Learning

* [Marvin's Speeding Up the JS Ecosystem series](https://marvinh.dev/blog/speeding-up-javascript-ecosystem/)
* [Practical barrel file guide for library authors](https://thepassle.netlify.app/blog/practical-barrel-file-guide-for-library-authors)
