Let’s say you need to add a new dependency on a library “example-lib”. Without Rush, you would do something like this:
# DON'T DO THIS IN A RUSH REPO: ~/my-repo$ cd apps/my-app ~/my-repo/apps/my-app$ npm install --save example-lib
In a Rush repo, you should instead use the rush add command:
~/my-repo$ cd apps/my-app # Add "example-lib" as a dependency of "my-app", and then automatically run "rush update": ~/my-repo/apps/my-app$ rush add --package example-lib
rush add command can also be used to update the version of an existing dependency:
# Update "my-app" to use "example-lib" version "~1.2.3": ~/my-repo/apps/my-app$ rush add --package email@example.com # Or if you want the version specifier "^1.2.3": ~/my-repo/apps/my-app$ rush add --package firstname.lastname@example.org --caret # A more advanced example, where we query the NPM registry to find latest version that is # compatible with the SemVer specifier "^1.2.0" and then add it as a tilde dependency # such as "~1.5.3". # # IMPORTANT: When specifying symbol characters on the command line, use quotes so they # don't get misinterpreted by your shell. ~/my-repo/apps/my-app$ rush add --package "example-lib@^1.2.0" # If any other projects in the repo are using "example-lib", you can update them all # to "1.2.3" in bulk: ~/my-repo/apps/my-app$ rush add --package email@example.com --make-consistent
The command-line help for
rush add describes other options that you can use to customize the behavior.
Tip: A cool VS Code feature
By the way, if you use Visual Studio Code as your editor, another option is to simply edit the package.json file directly. If you start typing
"example-lib":, VS Code will automatically query the NPM registry and show autocomplete suggestions for the latest published version. For simple additions, this can be even quicker than
If you modify package.json manually, don’t forget to run
Upgrading to newer versions of your NPM packages
Today, Rush does not yet have an integrated equivalent of
npm update or npm-check-updates. So you if you want to update the SemVer patterns across all your package.json files, you’ll need to use an external tool.
NOTE: Bulk updating of package.json versions is an important feature. We would love for someone to contribute a PR. The only reason the Rush developers have not prioritized this is that it generally gets solved in various other ways for the monorepos that we manage.