节点安装钩子允许在安装新的 npm 模块(包括节点和外部模块)时添加自定义代码。
preInstall (安装前)
在运行 npm install
安装 npm 模块之前调用。
该钩子会传入一个 InstallEvent
对象,其中包含有关要安装的模块的信息。
{
"module": "<npm module name>",
"version": "<version to be installed>",
"url": "<optional url to install from>",
"dir": "<directory to run the install in>",
"isExisting": "<boolean> this is a module we already know about",
"isUpgrade": "<boolean> this is an upgrade rather than new install",
"args": [ "an array", "of the args", "that will be passed to npm"]
}
该钩子可以修改 InstallEvent 以改变 npm 的运行方式。例如,可以修改 args
数组以更改传递给 npm
的参数。
如果钩子返回 false
,则 npm install
将被跳过,处理将继续,如同它已运行。这将允许使用一些替代机制——只要它导致模块安装在预期的 node_modules
目录下。
如果钩子抛出错误,安装将干净地失败。
RED.hooks.add("preInstall", (installEvent) => {
console.log(`About to install ${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 module name>",
"dir": "<directory to run the remove in>",
"args": [ "an array", "of the args" , "we will pass to npm"]
}
该钩子可以修改 UninstallEvent 以改变 npm 的运行方式。例如,可以修改 args
数组以更改传递给 npm
的参数。
如果钩子返回 false
,则 npm remove
将被跳过,处理将继续,如同它已运行。这将允许使用一些替代机制。
如果钩子抛出错误,卸载将干净地失败。
RED.hooks.add("preUninstall", (uninstallEvent) => {
console.log(`About to remove ${uninstallEvent.module}`);
});
postUninstall (卸载后)
在 npm remove
完成删除 npm 模块后调用。
注意:如果 preUninstall
钩子返回 false
,则 npm remove
将不会运行,但此钩子仍会被调用。
此钩子可用于运行所需的任何卸载后活动。
如果钩子抛出错误,它将被记录,但卸载将干净地完成,因为在 npm remove
完成后我们无法回滚它。
RED.hooks.add("postUninstall", (uninstallEvent) => {
console.log(`Removed ${uninstallEvent.module}`);
});
InstallEvent
对象{
"module": "<npm module name>",
"version": "<version to be installed>",
"url": "<optional url to install from>",
"dir": "<directory to run the install in>",
"isExisting": "<boolean> this is a module we already know about",
"isUpgrade": "<boolean> this is an upgrade rather than new install",
"args": [ "an array", "of the args", "we will pass to npm"]
}
UninstallEvent
对象{
"module": "<npm module name>",
"dir": "<directory to run the remove in>",
"args": [ "an array", "of the args", "we will pass to npm"]
}
版权所有 OpenJS Foundation 和 Node-RED 贡献者。保留所有权利。OpenJS Foundation 已注册商标并使用商标。有关 OpenJS Foundation 的商标列表,请参阅我们的商标政策和商标列表。未在OpenJS Foundation 商标列表中指明的商标和徽标是其各自持有人的商标™ 或注册® 商标。使用它们不意味着与它们有任何关联或得到它们的认可。
OpenJS Foundation | 使用条款 | 隐私政策 | OpenJS Foundation 章程 | 商标政策 | 商标列表 | Cookie 政策