This is documentation of various decisions we made during design and development, together with the rationale behind them.
Several reasons:
- Rush in conjunction with PNPM construct node_modules the correct way
- Product vs toolbox philosophy; Rush comes with an opinion and useful built-in functionality to tackle several problems related to managing external dependencies
- Good documentation, simple setup
Bottom line is Rush 'just worked' and included all that we needed. We spent very little time fiddling with it and did not have to deal with very little incidental complexity.
You can read more about package managers in this article.
Also from an honest pragmatic point of view, Rush really only works well with PNPM; its Yarn support is experimental and while it can work with NPM it needs some ancient version :)
This is typical choice when the requirement is to isolate implementation detail from the domain model. We need that to support multiple types of backends.