a comparison of tools within the JavaScript ecosystem

docs: update README.md (#56)

authored by samanthanguyen.me and committed by

GitHub 62cc4c87 509e7893

+10 -7
+10 -7
README.md
··· 1 - # nc-js/ecosystem 1 + # JS ecosystem 2 2 3 - [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square)](https://opensource.org/licenses/MIT) 4 - [![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/neoncitylights/js-eco/.github%2Fworkflows%2Fnode.yml?style=flat-square)](https://github.com/neoncitylights/js-eco/blob/main/.github/workflows/node.yml) 3 + [![License: MIT][license-badge]][license-url] 4 + 5 + [license-badge]: https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square 6 + [license-url]: #license 5 7 6 - A comparison of tools within the JS ecosystem. It aims to compare/evaluate the following: 8 + A comparison of tools (currently bundlers) within the JS ecosystem. It aims to compare/evaluate the following: 7 9 8 10 - How the JavaScript ecosystem evolves over time 9 11 - A reasonable, minimal configuration setup for a given toolchain 10 12 - Compile & transpilation time 11 13 - Compression/minification of code, compression time 12 - 13 14 14 15 ## Develop locally 15 16 ··· 35 36 - `{{runtime}}`: JavaScript runtime implementation. Choices: `browser`, `node`, `deno`, `bun` 36 37 - `{{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). 37 38 - `{{language}}`: JavaScript language. Choices: `ts`, `js` 38 - - `{{module-system}}`: JavaScript module resolution strategy. Choices: `esm`, `cjs`, `umd`, `amd` 39 + - `{{module-system}}`: JavaScript module resolution strategy. Choices: `esm`, `cjs`. (This intentionally does not include AMD, UMD, or IIFE) 39 40 40 - ## Questions and answers 41 + 42 + ## Q&A and Notes 41 43 42 44 - **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. 43 45 - **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. 44 46 - **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. 47 + - **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 45 48 46 49 ## License 47 50