···11-# nc-js/ecosystem
11+# JS ecosystem
2233-[](https://opensource.org/licenses/MIT)
44-[](https://github.com/neoncitylights/js-eco/blob/main/.github/workflows/node.yml)
33+[![License: MIT][license-badge]][license-url]
44+55+[license-badge]: https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square
66+[license-url]: #license
5766-A comparison of tools within the JS ecosystem. It aims to compare/evaluate the following:
88+A comparison of tools (currently bundlers) within the JS ecosystem. It aims to compare/evaluate the following:
79810- How the JavaScript ecosystem evolves over time
911- A reasonable, minimal configuration setup for a given toolchain
1012- Compile & transpilation time
1113- Compression/minification of code, compression time
1212-13141415## Develop locally
1516···3536- `{{runtime}}`: JavaScript runtime implementation. Choices: `browser`, `node`, `deno`, `bun`
3637- `{{tool}}`: build tool (e.g. Vite, Parcel, Webpack, esbuild, Rollup, Babel, etc.). If it does not use a build tool, it will say `native` (pure HTML/CSS/JS).
3738- `{{language}}`: JavaScript language. Choices: `ts`, `js`
3838-- `{{module-system}}`: JavaScript module resolution strategy. Choices: `esm`, `cjs`, `umd`, `amd`
3939+- `{{module-system}}`: JavaScript module resolution strategy. Choices: `esm`, `cjs`. (This intentionally does not include AMD, UMD, or IIFE)
39404040-## Questions and answers
4141+4242+## Q&A and Notes
41434244- **Why do pure JS libraries still include TypeScript as a developer dependency?**: While the source code may not be written in TypeScript, TypeScript is responsible for generating [declaration files](https://www.typescriptlang.org/docs/handbook/declaration-files/introduction) (`.d.ts`) during the build process to provide types.
4345- **Why does every `package.json` include `"private": true`?**: This monorepo only provides these setups for demonstration purposes. It does not intend to publish them to the NPM registry, hence why the `private` key is set. When you write your own library you'd like to distribute, you should remove this.
4446- **Why does every library include `publint` as a developer dependency and script?**: This monorepo uses the publint tool to ensure every setup is guaranteed to be usable when publicly distributed. Check [publint's official website](https://publint.dev/#docs) for more information.
4747+- **At the moment, not every combination is shown**. This may or may not change in the future, and if I can figure out how to improve maintaining a combinatorial explosion :D
45484649## License
4750