Node 安装钩子允许在安装新 npm 模块时添加自定义代码 - 适用于节点和外部模块。
preInstall
在运行 npm install
安装 npm 模块之前调用。
该钩子传递一个 InstallEvent
对象,包含有关要安装的模块的信息。
{
"module": "<npm 模块名称>",
"version": "<要安装的版本>",
"url": "<可选的安装来源网址>",
"dir": "<运行安装的目录>",
"isExisting": "<布尔值> 这是我们已经知道的模块",
"isUpgrade": "<布尔值> 这是升级而不是新安装",
"args": [ "一个数组", "的参数", "将传递给 npm"]
}
该钩子可以修改 InstallEvent 以更改 npm 的运行方式。 例如,可以修改 args
数组来改变传递给 npm
的参数。
如果钩子返回 false
,则会跳过 npm install
,并继续处理,就好像它已被运行一样。这将允许使用一些替代机制 - 只要它导致模块在预期的 node_modules
目录下被安装。
如果钩子抛出错误,则安装将干净地失败。
RED.hooks.add("preInstall", (installEvent) => {
console.log(`即将安装 ${installEvent.module}@${installEvent.version}`);
});
postInstall
在 npm install
完成安装 npm 模块后调用。
注意 如果 preInstall
钩子返回了 false
,则 npm install
并未运行,但该钩子仍会被调用。
该钩子可用于运行任何需要的后安装活动。
例如,当在 Electron 环境中运行时,必须重建模块:
RED.hooks.add("postInstall", (installEvent, done) => {
child_process.exec("npm run rebuild " + installEvent.module,
{cwd: installEvent.dir},
(err, stdout, stderr) => {
done();
}
);
});
如果钩子抛出错误,安装将干净地失败。
如果之前的 npm install
返回了错误,则不会调用该钩子。
preUninstall
在运行 npm remove
卸载 npm 模块之前调用。
该钩子传递一个 UninstallEvent
对象,包含有关要移除的模块的信息。
{
"module": "<npm 模块名称>",
"dir": "<运行移除的目录>",
"args": [ "一个数组", "的参数" , "我们将传递给 npm"]
}
该钩子可以修改 UninstallEvent 以更改 npm 的运行方式。 例如,可以修改 args
数组以改变传递给 npm
的参数。
如果钩子返回 false
,则会跳过 npm remove
,并继续处理,就好像它已被运行一样。这将允许使用一些替代机制。
如果钩子抛出错误,卸载将干净地失败。
RED.hooks.add("preUninstall", (uninstallEvent) => {
console.log(`即将移除 ${uninstallEvent.module}`);
});
postUninstall
在 npm remove
完成移除 npm 模块后调用。
注意 如果 preUninstall
钩子返回了 false
,则 npm remove
并未运行,但该钩子仍会被调用。
该钩子可用于运行任何需要的后卸载活动。
如果钩子抛出错误,将被记录,但卸载将正常完成,因为我们无法在 npm remove
完成后回滚操作。
RED.hooks.add("postUninstall", (uninstallEvent) => {
console.log(`已移除 ${uninstallEvent.module}`);
});
InstallEvent
对象{
"module": "<npm 模块名称>",
"version": "<要安装的版本>",
"url": "<可选的安装来源网址>",
"dir": "<运行安装的目录>",
"isExisting": "<布尔值> 这是我们已经知道的模块",
"isUpgrade": "<布尔值> 这是升级而不是新安装",
"args": [ "一个数组", "的参数", "我们将传递给 npm"]
}
UninstallEvent
对象```json
{
“module”: “
版权所有 OpenJS Foundation 和 Node-RED 贡献者。保留所有权利。OpenJS Foundation 拥有并使用注册商标。有关 OpenJS Foundation 的商标列表,请参阅我们的 商标政策 和 商标列表。未在 OpenJS Foundation 商标列表 中列出的商标和徽标是其各自持有者的商标™或注册商标®。使用它们并不意味着与它们有任何关联或认可。
OpenJS Foundation | 使用条款 | 隐私政策 | OpenJS Foundation 章程 | 商标政策 | 商标列表 | Cookie 政策