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, nodejs/amaro]. For full TypeScript support, there is third-party tooling available [nodejs.org, privatenumber/tsx, unjs/jiti].
-
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]
Package Manager
- JSR - Package manager and registry.
- npm - Package manager and registry.
- pnpm - Package manager based on the npm registry.
- Yarn - Package manager based on the npm registry.
Linter / Formatter
- ESLint - Lint and fix JavaScript, TypeScript, HTML, CSS, JSON, Markdown.
- Biome
- Oxlint
- 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 Processors
- 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].
Generic
- Babel - JavaScript compiler mainly used to achieve backward compatibility with older browsers.
- CSSTree - Tool set for CSS including fast detailed parser, walker, generator and lexer based on W3C specs and browser implementations.
- esbuild - Bundler/minifier for JavaScript and CSS.
- Lightning CSS - CSS parser, transformer, bundler, and minifier.
- Oxc - Collection of JavaScript tools written in Rust.
- 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.
- rust-cssparser - CSS Parser.
- SWC - Compiler and bundler for JavaScript/TypeScript (currently without type checking).
- tsdown - Bundler for libraries powered by Rolldown.
- Turborepo - Build system 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.
The overall toolchain typically includes many stages like parsing, resolving, transpiling, compiling, bundling, minifying, serving, and more. Most tools listed here contain several of these stages, so keeping each category strictly separate isn’t practical.