Toolchain
Runtime
-
Node.js is currently the most used JavaScript runtime. It was introduced in 2008 and is based on the V8 JavaScript engine. Node.js supports a subset of TypeScript by stripping types before execution [nodejs.org]. For full TypeScript support, there is third-party tooling available [nodejs.org, privatenumber/tsx, TypeStrong/ts-node].
-
Deno is a JavaScript, TypeScript, and WebAssembly runtime that is based on the V8 engine. It was introduced in 2018. Deno aims to be largely npm-compatible.
-
workerd is Cloudflare's JavaScript/Wasm runtime. It was open sourced in 2022.
-
Bun is a JavaScript runtime that is based on the Apple JavaScriptCore engine. Bun has a built-in transpiler for TypeScript/JSX, bundler, and shell. And it includes a npm-compatible package manager. Bun was introduced in 2021.
-
wasmtime is a runtime for WebAssembly.
WinterTC (Web-interoperable Runtimes Technical Committee) is a committee aiming to improve interoperability of web platform APIs among runtimes. This is important to avoid/reduce API fragmentation between different runtimes. [wintercg.org, ecma-international.org, ecma-international.org, w3.org, runtime-compat.unjs.io]
Parser
- rust-cssparser - CSS Parser.
- rust-selectors - Parser for CSS selectors.
Linter / Formatter
- ESLint - Lint and fix JavaScript (and TypeScript).
- Biome
- Oxc
- Prettier - Opinionated code formatter for JavaScript/TypeScript, HTML, CSS, and more.
- Standard - JavaScript Style Guide, with linter & automatic code fixer.
- Stylelint - Linter for CSS, SCSS, Sass, Less, and SugarSS.
- XO - JavaScript/TypeScript linter based on ESLint.
CSS Preprocessors
- Less - It's CSS, with just a little more.
- PostCSS - Tool for transforming CSS with JavaScript.
- PostCSS Plugins
- SugarSS - Indent-based CSS syntax for PostCSS.
- Sass - CSS with superpowers (often called SCSS).
- Stylus - Expressive, robust, feature-rich CSS language built for nodejs.
There are tools available to convert from one preprocessor to another [csspre.com].
Compiler / Transpiler / Bundler / Dev Server
- Babel - JavaScript compiler mainly used to achieve backward compatibility with older browsers.
- esbuild - Bundler/minifier for JavaScript and CSS.
- Parcel - Compiler/bundler for JavaScript (using SWC), style sheets, and other files.
- Rolldown - Fast Rust bundler for JavaScript/TypeScript with Rollup-compatible API.
- rollup.js - Module bundler for JavaScript, often used to bundle JS libraries.
- Sucrase - Alternative to Babel that focuses on compiling non-standard language extensions: JSX, TypeScript, and Flow.
- SWC - Compiler and bundler for JavaScript/TypeScript (currently without type checking).
- TurboPack - Incremental bundler optimized for JavaScript and TypeScript, written in Rust.
- TypeScript - JavaScript with syntax for types that compiles down to JavaScript.
- Vite - Dev server (based on esbuild) and bundler (based on rollup.js).
- Web Dev Server
- Webpack - Bundle JavaScript, style sheets, and images.
A comparison of different bundlers can be found at bundlers.tooling.report.
Minifier
- Lightning CSS - CSS parser, transformer, bundler, and minifier.
- csso - CSS minifier with structural optimizations.