npm-rebuild

重建包

选择 CLI 版本

概要

npm rebuild [<package-spec>] ...]
alias: rb

描述

此命令执行以下操作

  1. 执行生命周期脚本 (preinstall, install, postinstall, prepare)
  2. 根据是否启用 bin 链接来链接 bin

此命令在以下场景中特别有用,包括但不限于

  1. 安装新版本的 node.js,您需要使用更新的二进制文件重新编译所有 C++ 附加组件。
  2. 使用 --ignore-scripts--no-bin-links 安装,以明确选择要构建和/或链接 bin 的包。

如果提供了一个或多个包规范,则只有名称和版本与其中一个规范匹配的包将被重建。

通常,您不应该需要运行 npm rebuild,因为它已经在 npm install 中为您完成(除非您使用 --ignore-scripts--no-bin-links 抑制了这些步骤)。

如果您的包根目录中存在 binding.gyp 文件,则 npm 将使用默认安装钩子

"scripts": {
"install": "node-gyp rebuild"
}

如果 package.json 有自己的 installpreinstall 脚本,则会抑制此默认行为。如果包指定 "gypfile": false,也会抑制此默认行为。

配置

全局

  • 默认值:false
  • 类型:布尔值

在“全局”模式下运行,以便包被安装到 prefix 文件夹而不是当前工作目录中。有关行为差异的更多信息,请参阅 文件夹

  • 包被安装到 {prefix}/lib/node_modules 文件夹中,而不是当前工作目录中。
  • bin 文件链接到 {prefix}/bin
  • 手册页链接到 {prefix}/share/man
  • 默认值:true
  • 类型:布尔值

告诉 npm 为包可执行文件创建符号链接(或 Windows 上的 .cmd shim)。

设置为 false 以使其不执行此操作。这可用于解决一些文件系统不支持符号链接的问题,即使是在表面上是 Unix 系统的系统上也是如此。

foreground-scripts

  • 默认值:false,除非在使用 npm packnpm publish 时,默认值为 true
  • 类型:布尔值

在前景进程中运行所有构建脚本(即,preinstallinstallpostinstall)脚本,与主 npm 进程共享标准输入、输出和错误。

请注意,这通常会使安装运行速度更慢,并且会变得更加嘈杂,但对于调试很有用。

ignore-scripts

  • 默认值:false
  • 类型:布尔值

如果为 true,则 npm 不会运行 package.json 文件中指定的脚本。

请注意,明确旨在运行特定脚本的命令,如 npm startnpm stopnpm restartnpm testnpm run-script,如果设置了 ignore-scripts,它们仍然会运行其目标脚本,但它们不会运行任何前置或后置脚本。

工作区

  • 默认值
  • 类型:字符串(可以多次设置)

启用在当前项目的配置工作区的上下文中运行命令,同时通过仅运行此配置选项定义的工作区进行过滤。

对于 workspace 配置的有效值是:

  • 工作区名称
  • 工作区目录的路径
  • 父工作区目录的路径(将导致选择该文件夹中的所有工作区)

当为 npm init 命令设置时,可以将其设置为尚未存在的工作区的文件夹,以创建文件夹并将其设置为项目中的全新工作区。

此值不会导出到子进程的环境中。

工作区

  • 默认值:null
  • 类型:null 或布尔值

设置为 true 以在所有配置工作区的上下文中运行命令。

将此值显式设置为 false 将导致像 install 这样的命令完全忽略工作区。当未显式设置时

  • node_modules 树进行操作的命令(install、update 等)将链接工作区到 node_modules 文件夹中。- 执行其他操作(test、exec、publish 等)的命令将在根项目上运行,除非workspace 配置中指定了一个或多个工作区。

此值不会导出到子进程的环境中。

include-workspace-root

  • 默认值:false
  • 类型:布尔值

当为命令启用工作区时,包括工作区根目录。

当设置为 false 时,通过 workspace 配置指定单个工作区,或通过 workspaces 标志指定所有工作区,将导致 npm 仅在指定的工作区上运行,而不是在根项目上运行。

此值不会导出到子进程的环境中。

  • 默认值:false
  • 类型:布尔值

当设置此选项时,file: 协议依赖项将被打包并安装为常规依赖项,而不是创建符号链接。此选项对工作区没有影响。

另请参阅