package.json 中定义_生命周期脚本_。以下是一些最常见的,除此之外还有许多其他:
preinstall:包安装之前运行postinstall:包安装之后运行preuninstall:包卸载之前运行prepublishOnly:包发布之前运行
npm 客户端不同。
postinstall
postinstall 脚本尤其重要。它被广泛用于构建或安装针对特定平台的二进制文件,适用于作为原生 Node.js 插件实现的包。例如,node-sass 使用 postinstall 来构建 Sass 的原生二进制文件。
package.json
trustedDependencies
Bun 是”默认安全”的:它只为允许列表中的包运行生命周期脚本。要允许特定包的生命周期脚本,请将其名称添加到 package.json 的 trustedDependencies 数组中。
package.json
trustedDependencies 后,安装或重新安装它。Bun 会读取该字段并运行其生命周期脚本。
一个精选的常用 npm 包列表(带有生命周期脚本)默认被允许。请参阅完整列表。
默认的可信依赖列表仅适用于从 npm 安装的包。对于来自其他来源的包(如
file:、link:、git: 或 github: 依赖),你必须显式将它们添加到 trustedDependencies 中才能运行其生命周期脚本,即使包名与默认列表中的条目匹配。这可以防止恶意包通过本地文件路径或 git 仓库伪装成可信包名。trustedDependencies 字段的行为
在 package.json 中定义 trustedDependencies 会替换默认列表,而不是扩展它。每个项目恰好适用三种模式之一:
如果你想要完全退出默认允许列表而不必在每次安装时传递
--ignore-scripts,请设置 trustedDependencies: []。如果你使用显式列表定义了 trustedDependencies,请包括你仍然需要的默认列表中的任何包(例如 sharp 或 esbuild)——它们不再被隐式信任。
--ignore-scripts
要禁用所有包的生命周期脚本,请使用 --ignore-scripts 标志。
terminal
bunfig.toml 中设置 install.ignoreScripts:
bunfig.toml
.npmrc 中:
.npmrc