···11+# Logs
22+logs
33+*.log
44+npm-debug.log*
55+yarn-debug.log*
66+yarn-error.log*
77+lerna-debug.log*
88+.pnpm-debug.log*
99+1010+# NPM packaging
1111+dist
1212+1313+# Diagnostic reports (https://nodejs.org/api/report.html)
1414+report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
1515+1616+# Runtime data
1717+pids
1818+*.pid
1919+*.seed
2020+*.pid.lock
2121+2222+# Directory for instrumented libs generated by jscoverage/JSCover
2323+lib-cov
2424+2525+# Coverage directory used by tools like istanbul
2626+coverage
2727+*.lcov
2828+2929+# nyc test coverage
3030+.nyc_output
3131+3232+# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
3333+.grunt
3434+3535+# Bower dependency directory (https://bower.io/)
3636+bower_components
3737+3838+# node-waf configuration
3939+.lock-wscript
4040+4141+# Compiled binary addons (https://nodejs.org/api/addons.html)
4242+build/Release
4343+4444+# Dependency directories
4545+node_modules
4646+jspm_packages
4747+4848+# Snowpack dependency directory (https://snowpack.dev/)
4949+web_modules/
5050+5151+# TypeScript cache
5252+*.tsbuildinfo
5353+5454+# Optional npm cache directory
5555+.npm
5656+5757+# Optional eslint cache
5858+.eslintcache
5959+6060+# Optional stylelint cache
6161+.stylelintcache
6262+6363+# Microbundle cache
6464+.rpt2_cache/
6565+.rts2_cache_cjs/
6666+.rts2_cache_es/
6767+.rts2_cache_umd/
6868+6969+# Optional REPL history
7070+.node_repl_history
7171+7272+# Output of 'npm pack'
7373+*.tgz
7474+7575+# Yarn Integrity file
7676+.yarn-integrity
7777+7878+# dotenv environment variable files
7979+.env
8080+.env.development.local
8181+.env.test.local
8282+.env.production.local
8383+.env.local
8484+8585+# parcel-bundler cache (https://parceljs.org/)
8686+.cache
8787+.parcel-cache
8888+8989+# Next.js build output
9090+.next
9191+out
9292+next-env.d.ts
9393+9494+# Nuxt.js build / generate output
9595+.nuxt
9696+9797+# Gatsby files
9898+.cache/
9999+# Comment in the public line in if your project uses Gatsby and not Next.js
100100+# https://nextjs.org/blog/next-9-1#public-directory-support
101101+# public
102102+103103+# vuepress build output
104104+.vuepress/dist
105105+106106+# vuepress v2.x temp and cache directory
107107+.temp
108108+.cache
109109+110110+# Docusaurus cache and generated files
111111+.docusaurus
112112+113113+# Serverless directories
114114+.serverless/
115115+116116+# FuseBox cache
117117+.fusebox/
118118+119119+# DynamoDB Local files
120120+.dynamodb/
121121+122122+# TernJS port file
123123+.tern-port
124124+125125+# yarn v2
126126+.yarn/cache
127127+.yarn/unplugged
128128+.yarn/build-state.yml
129129+.yarn/install-state.gz
130130+.pnp.*
131131+132132+# TypeDoc
133133+docs/typedoc
134134+135135+# Storybook
136136+build-storybook.log
137137+storybook-static
138138+139139+# Vercel
140140+.vercel
141141+142142+## VSCode
143143+# Stores VSCode versions used for testing VSCode extensions
144144+.vscode-test
145145+146146+# VSCode Local History
147147+# https://marketplace.visualstudio.com/items?itemName=xyz.local-history
148148+.history
149149+150150+# JetBrains IDE
151151+.idea
152152+153153+# Apple/MacOS
154154+.DS_Store
+40-2
README.md
···11-# js-eco
22-a comparison of tools within the JS ecosystem
11+# neoncitylights/js-eco
22+33+A comparison of tools within the JS ecosystem.
44+55+## Structure
66+77+At the moment, the top-level directories include:
88+- `/unit-testing`: Comparison of unit testing frameworks
99+- `/e2e-testing`: Comparsion of e2e testing frameworks
1010+- `/libs`: Comparison of build tools for creating distributable libraries
1111+- `/apps`: Comarpsion of web frameworks for creating web applications
1212+- `/fmtlint`: Comparison of formatting and linting tools
1313+1414+Each subdirectory name in the repository generally follows the naming convention below:
1515+1616+```
1717+{{runtime}}-{{module-system}}-{{type}}-{{tools+}}
1818+```
1919+2020+- `{{runtime}}`: JavaScript runtime implementation > `browser`, `node`, `deno`, `bun`
2121+- `{{module-system}}`: JavaScript module resolution strategy -> `esm`, `cjs`, `umd`, `amd`
2222+- `{{language}}`: JavaScript language > `ts`, `js`
2323+- `{{tools+}}`: 1 or more build tools together (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).
2424+2525+## Types of tools
2626+2727+- **Minifier**: A tool that optimizes source code through methods like removing whitespace, shortening names of variables and arguments, etc. A modern bundler will also automatically minify.
2828+- **Bundler**: A tool that optimizes source code and its dependencies by turning it into a single file. Bundlers help performance by reducing the amount of network requests and reducing the request load size.
2929+- **Transpiler**: A compiler that, given some source code, will apply certain transformations and reproduce source code in the same or different language. For example, Babel.js can transpile ES2022 code to an older ES-level for wider cross-browser compatibility, such as ES2015. TypeScript is also capable of transpiling.
3030+- **Unit testing**: Unit testing involves ensuring a certain output for a given input, for the smallest testable parts of some code. Some popular testing frameworks include Vitest and Jest.
3131+- **E2E testing**: E2E (end-to-end) testing involves testing an application from start to finish to simulate real-life user scenarios. In the JS context, this typically involves spinning up a headless browser instance and testing against the instance.
3232+- **Benchmarking**: Benchmarking is another name for perfomance testing, which involves measuring the speed of some piece of code in a controlled environment. A benchmarker will typically include statistical measures such as standard deviations and regressions to make sure the benchmarks give accurate reports.
3333+3434+## License
3535+3636+This library is licensed under the MIT license ([`LICENSE-MIT`](./LICENSE) or <http://opensource.org/licenses/MIT>).
3737+3838+### Contribution
3939+4040+Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the MIT license, shall be licensed as above, without any additional terms or conditions.