NPM-REBUILD(1)
πΈ NPM-REBUILD(1) β like, the npm-rebuild manual page, bestie πΈ
okay so before we even start: this is the page for npm-rebuild from the npm fam, and honestly? she's a sleeper hit. let's get into it π
β¨ NAME β¨
npm-rebuild β rebuild a package, fr fr π«Ά
π Synopsis
npm rebuild [<package-spec>] ...]
alias: rb
yes bestie, rb is the little nickname, use it, it's cute π
π DESCRIPTION π
so what does this command actually do? two things, and she does them well:
- Execute lifecycle scripts (
preinstall,install,postinstall,prepare) π₯ - Links bins depending on whether bin links are enabled
This command is particularly useful in scenarios including but not limited to:
- Installing a new version of node.js, where you need to recompile all your C++ add-ons with the updated binary. π (the classic)
- Installing with
--ignore-scriptsand--no-bin-links, to explicitly choose which packages to build and/or link bins. β¨
If one or more package specs are provided, then only packages with a name and version matching one of the specifiers will be rebuilt. like, she's picky, but in a good way π
Usually, you should not need to run npm rebuild as it is already done for you as part of npm install (unless you suppressed these steps with --ignore-scripts or --no-bin-links). so don't be out here doing the most for no reason, iykyk π
If there is a binding.gyp file in the root of your package, then npm will use a default install hook:
"scripts": {
"install": "node-gyp rebuild"
}
This default behavior is suppressed if the package.json has its own install or preinstall scripts. It is also suppressed if the package specifies "gypfile": false π
π¦ CONFIGURATION π¦
time for the config section, aka the main character energy part of the page, let's gooo π
π global
- Default:
false - Type: Boolean
Operates in "global" mode, so that packages are installed into the prefix folder instead of the current working directory. See npm help folders for more on the differences in behavior.
- packages are installed into the
{prefix}/lib/node_modulesfolder, instead of the current working directory. - bin files are linked to
{prefix}/bin - man pages are linked to
{prefix}/share/man
π bin-links
- Default:
true - Type: Boolean
Tells npm to create symlinks (or .cmd shims on Windows) for package executables.
Set to false to have it not do this. This can be used to work around the fact that some file systems don't support symlinks, even on ostensibly Unix systems. (yes, even Unix ones, we're not naming names π€)
π§ foreground-scripts
- Default:
falseunless when usingnpm packornpm publishwhere it defaults totrue - Type: Boolean
Run all build scripts (ie, preinstall, install, and postinstall) scripts for installed packages in the foreground process, sharing standard input, output, and error with the main npm process. like she's loud and she's proud π£
Note that this will generally make installs run slower, and be much noisier, but can be useful for debugging.
π ignore-scripts
- Default:
false - Type: Boolean
If true, npm does not run scripts specified in package.json files.
Note that commands explicitly intended to run a particular script, such as npm start, npm stop, npm restart, npm test, and npm run will still run their intended script if ignore-scripts is set, but they will not run any pre- or post-scripts. (so the main event happens, the pre-gaming and the afterparty do not π€)
Setting ignore-scripts also disables .npm-extension execution, as if ignore-extension were set.
πΈ allow-scripts
- Default:
"" - Type: String (can be set multiple times)
Comma-separated list of packages whose install-time lifecycle scripts (preinstall, install, postinstall, and prepare for non-registry dependencies) are allowed to run.
This setting is intended for one-off and global contexts: npm exec, npx, and npm install -g, where no project package.json is involved. For team-wide policy in a project, use the allowScripts field in package.json (which also supports explicit denials), or configure it in .npmrc. Passing --allow-scripts on the command line during a project-scoped npm install, ci, update, or rebuild is an error. π¨
Each name is matched against a dependency's resolved identity, not against the package's self-reported name. --ignore-scripts and --dangerously-allow-all-scripts both override this setting.
This value is not exported to the environment for child processes.
π₯ strict-allow-scripts
- Default:
false - Type: Boolean
If true, turn the install-script policy from a warning into a hard error: any dependency with install scripts that is not covered by allowScripts will fail the install instead of being blocked with a warning. she's not asking anymore, she's TELLING π
Dependencies explicitly denied with false in allowScripts are always silently skipped; this setting only affects unreviewed entries (packages with install scripts that are neither approved nor denied). --ignore-scripts and --dangerously-allow-all-scripts both override this setting.
Optional dependencies that cannot be installed on the current platform or engine (a non-matching os, cpu, or libc) are not flagged, because their install scripts never run. (they can't be in trouble if they never showed up π«Ά)
β‘ dangerously-allow-all-scripts
- Default:
false - Type: Boolean
If true, bypass the allowScripts policy entirely and run every dependency install script regardless of whether it was approved or denied. Intended as a migration escape hatch only; its use is strongly discouraged. --ignore-scripts still takes precedence over this setting.
bestie. the word "dangerously" is RIGHT THERE in the name. she said escape hatch, not lifestyle. π
π workspace
- Default:
- Type: String (can be set multiple times)
Enable running a command in the context of the configured workspaces of the current project while filtering by running only the workspaces defined by this configuration option.
Valid values for the workspace config are either:
- Workspace names
- Path to a workspace directory
- Path to a parent workspace directory (will result in selecting all workspaces within that folder)
When set for the npm init command, this may be set to the folder of a workspace which does not yet exist, to create the folder and set it up as a brand new workspace within the project. glow-up from nothing, we love to see it β¨
This value is not exported to the environment for child processes.
π workspaces
- Default:
null - Type: null or Boolean
Set to true to run the command in the context of all configured workspaces.
Explicitly setting this to false will cause commands like install to ignore workspaces altogether. When not set explicitly:
- Commands that operate on the
node_modulestree (install,update, etc.) will link workspaces into thenode_modulesfolder. - Commands that do other things (test,exec,publish, etc.) will operate on the root project, unless one or more workspaces are specified in theworkspaceconfig.
This value is not exported to the environment for child processes.
π include-workspace-root
- Default:
false - Type: Boolean
Include the workspace root when workspaces are enabled for a command.
When false, specifying individual workspaces via the workspace config, or all workspaces via the workspaces flag, will cause npm to operate only on the specified workspaces, and not on the root project. root project said "not me being left out" π
This value is not exported to the environment for child processes.
π¦ install-links
- Default:
false - Type: Boolean
When set file: protocol dependencies will be packed and installed as regular dependencies instead of creating a symlink. This option has no effect on workspaces.
π«Ά SEE ALSO π«Ά
npm help "package spec"npm help install
and that's the whole page bestie, you ate that πβ¨
npm@12.2.1 Β· October 2026 Β· that's the version and the date, mwah, go forth and rebuild responsibly π π
π¦ where this page comes from
- arch rolling: npm 12.2.1-1 Β· Artistic-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms