a comparison of tools within the JavaScript ecosystem
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

docs: add README.md

+194 -2
+154
.gitignore
··· 1 + # Logs 2 + logs 3 + *.log 4 + npm-debug.log* 5 + yarn-debug.log* 6 + yarn-error.log* 7 + lerna-debug.log* 8 + .pnpm-debug.log* 9 + 10 + # NPM packaging 11 + dist 12 + 13 + # Diagnostic reports (https://nodejs.org/api/report.html) 14 + report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 15 + 16 + # Runtime data 17 + pids 18 + *.pid 19 + *.seed 20 + *.pid.lock 21 + 22 + # Directory for instrumented libs generated by jscoverage/JSCover 23 + lib-cov 24 + 25 + # Coverage directory used by tools like istanbul 26 + coverage 27 + *.lcov 28 + 29 + # nyc test coverage 30 + .nyc_output 31 + 32 + # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 33 + .grunt 34 + 35 + # Bower dependency directory (https://bower.io/) 36 + bower_components 37 + 38 + # node-waf configuration 39 + .lock-wscript 40 + 41 + # Compiled binary addons (https://nodejs.org/api/addons.html) 42 + build/Release 43 + 44 + # Dependency directories 45 + node_modules 46 + jspm_packages 47 + 48 + # Snowpack dependency directory (https://snowpack.dev/) 49 + web_modules/ 50 + 51 + # TypeScript cache 52 + *.tsbuildinfo 53 + 54 + # Optional npm cache directory 55 + .npm 56 + 57 + # Optional eslint cache 58 + .eslintcache 59 + 60 + # Optional stylelint cache 61 + .stylelintcache 62 + 63 + # Microbundle cache 64 + .rpt2_cache/ 65 + .rts2_cache_cjs/ 66 + .rts2_cache_es/ 67 + .rts2_cache_umd/ 68 + 69 + # Optional REPL history 70 + .node_repl_history 71 + 72 + # Output of 'npm pack' 73 + *.tgz 74 + 75 + # Yarn Integrity file 76 + .yarn-integrity 77 + 78 + # dotenv environment variable files 79 + .env 80 + .env.development.local 81 + .env.test.local 82 + .env.production.local 83 + .env.local 84 + 85 + # parcel-bundler cache (https://parceljs.org/) 86 + .cache 87 + .parcel-cache 88 + 89 + # Next.js build output 90 + .next 91 + out 92 + next-env.d.ts 93 + 94 + # Nuxt.js build / generate output 95 + .nuxt 96 + 97 + # Gatsby files 98 + .cache/ 99 + # Comment in the public line in if your project uses Gatsby and not Next.js 100 + # https://nextjs.org/blog/next-9-1#public-directory-support 101 + # public 102 + 103 + # vuepress build output 104 + .vuepress/dist 105 + 106 + # vuepress v2.x temp and cache directory 107 + .temp 108 + .cache 109 + 110 + # Docusaurus cache and generated files 111 + .docusaurus 112 + 113 + # Serverless directories 114 + .serverless/ 115 + 116 + # FuseBox cache 117 + .fusebox/ 118 + 119 + # DynamoDB Local files 120 + .dynamodb/ 121 + 122 + # TernJS port file 123 + .tern-port 124 + 125 + # yarn v2 126 + .yarn/cache 127 + .yarn/unplugged 128 + .yarn/build-state.yml 129 + .yarn/install-state.gz 130 + .pnp.* 131 + 132 + # TypeDoc 133 + docs/typedoc 134 + 135 + # Storybook 136 + build-storybook.log 137 + storybook-static 138 + 139 + # Vercel 140 + .vercel 141 + 142 + ## VSCode 143 + # Stores VSCode versions used for testing VSCode extensions 144 + .vscode-test 145 + 146 + # VSCode Local History 147 + # https://marketplace.visualstudio.com/items?itemName=xyz.local-history 148 + .history 149 + 150 + # JetBrains IDE 151 + .idea 152 + 153 + # Apple/MacOS 154 + .DS_Store
+40 -2
README.md
··· 1 - # js-eco 2 - a comparison of tools within the JS ecosystem 1 + # neoncitylights/js-eco 2 + 3 + A comparison of tools within the JS ecosystem. 4 + 5 + ## Structure 6 + 7 + At the moment, the top-level directories include: 8 + - `/unit-testing`: Comparison of unit testing frameworks 9 + - `/e2e-testing`: Comparsion of e2e testing frameworks 10 + - `/libs`: Comparison of build tools for creating distributable libraries 11 + - `/apps`: Comarpsion of web frameworks for creating web applications 12 + - `/fmtlint`: Comparison of formatting and linting tools 13 + 14 + Each subdirectory name in the repository generally follows the naming convention below: 15 + 16 + ``` 17 + {{runtime}}-{{module-system}}-{{type}}-{{tools+}} 18 + ``` 19 + 20 + - `{{runtime}}`: JavaScript runtime implementation > `browser`, `node`, `deno`, `bun` 21 + - `{{module-system}}`: JavaScript module resolution strategy -> `esm`, `cjs`, `umd`, `amd` 22 + - `{{language}}`: JavaScript language > `ts`, `js` 23 + - `{{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). 24 + 25 + ## Types of tools 26 + 27 + - **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. 28 + - **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. 29 + - **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. 30 + - **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. 31 + - **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. 32 + - **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. 33 + 34 + ## License 35 + 36 + This library is licensed under the MIT license ([`LICENSE-MIT`](./LICENSE) or <http://opensource.org/licenses/MIT>). 37 + 38 + ### Contribution 39 + 40 + 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.