At Microsoft, we build monorepos with hundreds of projects. Rush's unique installation strategy produces a single shrinkwrap/lock file for all your projects that installs extremely fast. Rush supports parallel builds, subset builds, and incremental builds. Distributed multi-machine builds are coming soon!
Rush provides many mechanisms for onboarding newcomers and coordinating collaboration between teams. Repo policies allow new package dependencies to be reviewed before they are accepted. Rush can enforce consistent dependency versions across your repo. Different subsets of projects can publish separately with lockstep or independent versioning strategies, private releases, and so forth.
Tired of broken imports or mismatched versions when someone else installs your package? Rush's isolated symlinking model eliminates these NPM phantom dependencies, ensuring you'll never again accidentally import a library that was missing from package.json.
This algorithm is compatible with PNPM, NPM, and Yarn package managers.
Rush's installation model now supports the PNPM package manager, which eliminates NPM doppelgangers. You'll never again find 5 copies of the same version of the same library in your node_modules folder!
When you maintain a large repo, you don't want developers opening support tickets that can't be reproduced on any other computer. Rush helps to ensure that installs and builds are completely deterministic. Even the Rush engine version is automatically installed according to your Git branch. If you define custom commands or options, they are strictly validated and documented as part of Rush's command-line help.
Tired of cobbling together your developer experience from multiple tools that never seem to integrate properly? Rush is a unified orchestrator that can install, link, build, generate change logs, publish, and bump versions.
The Rush software is free and open source. Community contributions are welcome! We're also open-minded about your toolchain: In a Rush repo, each project folder remains fully self-contained, individually installable, and easy to relocate if needed. Relatively little effort is required to enable/disable Rush for a given set of projects.