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 政策