What is Rush Stack?

Rush Stack is a…

Mission to provide reusable tech for running large scale monorepos for the web

to provide reusable tech for running large scale monorepos for the web Open collaboration among community partners with serious tooling requirements, who got tired of going it alone

among community partners with serious tooling requirements, who got tired of going it alone Specific strategy that integrates popular tools like NodeJS, TypeScript, ESLint, Prettier, Webpack, Jest, etc.

that integrates popular tools like NodeJS, TypeScript, ESLint, Prettier, Webpack, Jest, etc. Family of projects that fill in the gaps for this strategy

Although various pieces of this work have been underway for years, we’re now bringing them together under a common charter as Rush Stack. Track our progress on the News page and Roadmap.

What’s in the stack?

These major tools are developed under the Rush Stack umbrella:

Rush: the scalable monorepo build orchestrator

Heft: an extensible build system that interfaces with Rush

API Extractor: coordinates API reviews, and generates .d.ts rollups

API Documenter: generates your API documentation website

@ rushstack/eslint-config: our standardized ESLint rule set, specifically designed for large scale TypeScript monorepos

Rundown: a tool for optimizing Node.js process startup times

The projects are built on a common framework of reusable library packages, which includes:

ts-command-line: a strict command-line parser whose options/docs can be augmented by toolchain packages

node-core-library: the standard base library used by all our projects

package-deps-hash: the incremental build engine used by Rush

rig-package: a system for sharing tool configurations between projects without duplicating config files

stream-collator: the magic behind how Rush can display real-time log output from concurrent tasks, without ugly interleaving of the output

tree-pattern: a simple, fast pattern matcher for JavaScript tree structures.

a family of webpack plugins used in our applications

What’s the relationship to “Rush”?

The Rush Stack tools are optional extras that you can use with Rush. As the NodeJS “build orchestrator,” Rush’s job is to:

Ensure deterministic and reliable package installations (using Yarn, PNPM, or NPM)

Build your projects in the right order, as fast as possible

Apply policies to keep your monorepo running smoothly

Manage your publishing workflows

Establish a standard repo layout and familiar CLI, to facilitate developers who contribute to many different monorepos

Beyond this role, Rush leaves the rest up to you. Individual projects can build with any tool chain you like. This is very flexible!

But flexibility has its downsides. NodeJS tooling is notorious for its bewildering array of options: Choose your compiler. Choose your linter. Choose your bundler, your package manager, your task engine, test runner, test assertion library, and so on. Once you’ve placed your bets, integrating all these pieces turns out to be a software project of its own. As you scale up, these costs can add up fast!

In summer of 2019, we launched Rush Stack with the aim to provide a reusable solution for this broader set of problems. You can still use Rush by itself, of course. But if you’re tired of going it alone, we invite you to: