NX vs Lerna vs Rush, can anyone comment on their experience using them?

This page summarizes the projects mentioned and recommended in the original post on /r/node

Our great sponsors
  • SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • nx

    Smart Monorepos ยท Fast CI

  • Intellisense is subpar at best. They say it's a fault of VSCode and will not fix it. Basically, VSCode will not know of a library's existence unless it's manually imported at least once in your file.

  • TypeScript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • Not everything supports Rush's way of hoisting dependencies properly. For example be prepared to see issues with typescript about this issue: https://github.com/microsoft/TypeScript/issues/42873 (Search rush in that page :) ). You can easily work around it but realistically - microsoft owns both projects - why is this still a problem?

  • SurveyJS

    Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.

    SurveyJS logo
  • rush-dev-watcher

    Run development build commands across a project and its dependencies

  • It's not mandatory but be aware there is no built in way (that I am aware of) to start all the long running processes in one command. However Rush is built to be expanded on and you can achieve this for example with a script like this: https://github.com/dimfeld/rush-dev-watcher The important thing to note is why Rush is like this, its primarily designed for large monorepos, ones where you have a target project you wish to build and develop on but you wish for all of its dependencies to be built as well in order. If you chose for example lerna to do this you would likely get into a situation where you have watchers on every single project firing and rebuilding causing other dependencies to rebuild and eventually you are left waiting ages for the final project you care about to be effectively 'stable' as it's one big race to which project finishes first (if you're streaming the output).

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts