rush add
rush add <package> [<package> ...] [flags]Adds one or more packages to package.json, resolves the updated dependency tree, and installs everything. Equivalent to npm install <pkg> --save.
Dependency section
Section titled “Dependency section”| Flag | Short | Description |
|---|---|---|
--save-prod | -P | Save to dependencies (default) |
--save-dev | -D | Save to devDependencies |
--save-optional | -O | Save to optionalDependencies |
--save-peer | Save to peerDependencies | |
--save-exact / --exact | -E | Save exact version without ^ range prefix |
Cache & platform
Section titled “Cache & platform”| Flag | Default | Description |
|---|---|---|
--force | false | Re-download packages, bypassing the local store |
--no-cache | false | Disable metadata cache and shared-store reuse |
--os <os> | detected | Override OS for platform matching |
--cpu <cpu> | detected | Override CPU for platform matching |
Lifecycle scripts
Section titled “Lifecycle scripts”| Flag | Default | Description |
|---|---|---|
--ignore-scripts | false | Skip lifecycle scripts after install |
Output
Section titled “Output”| Flag | Default | Description |
|---|---|---|
--verbose | false | Print detailed installation progress |
Version specifiers
Section titled “Version specifiers”By default Rush saves the package at ^<latest>. You can pin a specific version or range:
rush add express # → "express": "^4.18.2"rush add express@4 # → "express": "^4.18.2" (latest in 4.x)rush add express@">=4 <5" # → "express": ">=4 <5"rush add express@latest # → "express": "^4.18.2" (dist-tags.latest)rush add express@next # → "express": "^5.0.0" (dist-tags.next)Examples
Section titled “Examples”Add a runtime dependency:
rush add express zodAdd a dev dependency:
rush add typescript @types/node --save-devAdd an optional dependency (install failure won’t error):
rush add fsevents --save-optionalAdd a peer dependency (updates package.json only, no install):
rush add react@^19 --save-peerPin an exact version:
Add for a specific target platform:
rush add esbuild --os linux --cpu x64What changes
Section titled “What changes”package.json— the new package is added under the appropriate keyrush.lock— re-resolved and rewritten with the full updated treenode_modules/— the new package (and any new transitive deps) is extractednode_modules/.bin/— any new executables are symlinked