Skip to main content
默认情况下,Bun 不会为已安装的依赖执行任意生命周期脚本,例如 postinstall 和 node-gyp 构建。这些脚本可能带来安全风险,因为它们可以在你的计算机上执行任意代码。
Bun 默认包含一个常用软件包的许可列表,这些软件包的 postinstall 脚本已知是安全的。请参阅完整列表。此许可列表仅适用于从 npm 安装的软件包。对于来自其他来源的软件包(例如 file:、link:、git: 或 github: 依赖),你必须将它们显式添加到 trustedDependencies。在 package.json 中定义 trustedDependencies 会_替换_此默认列表,而不是扩展它,因此也要列出默认列表中你仍需要执行其生命周期脚本的任何软件包。

如果你看到以下错误之一,那么你可能正在使用一个需要其 postinstall 脚本才能正常工作的​​软件包:
  • error: could not determine executable to run for package
  • ENOEXEC(Exec format error)

要允许 Bun 为特定软件包执行生命周期脚本,请将该软件包添加到 package.json 中的 trustedDependencies。你可以运行 bun pm trust <pkg> 自动完成此操作。
在 trustedDependencies 中列出某个软件包,只会允许该特定软件包的生命周期脚本执行,_不会_允许该依赖项的依赖项执行生命周期脚本。
package.json

将软件包添加到 trustedDependencies 后,请全新安装一次。Bun 会重新安装你的依赖项并运行该软件包的生命周期脚本。(bun pm trust 会立即运行这些脚本,因此你可以跳过额外的安装步骤。)
terminal

请参阅受信任的依赖。