diff --git a/packages/node_modules/@node-red/registry/lib/installer.js b/packages/node_modules/@node-red/registry/lib/installer.js index 9efea696f..e3aec476b 100644 --- a/packages/node_modules/@node-red/registry/lib/installer.js +++ b/packages/node_modules/@node-red/registry/lib/installer.js @@ -446,17 +446,22 @@ function uninstallModule(module) { var list = registry.removeModule(module); log.info(log._("server.install.uninstalling",{name:module})); - var args = ['remove','--no-audit','--no-update-notifier','--no-fund','--save',module]; - let triggerPayload = { "module": module, "dir": installDir, + "args": ['--no-audit','--no-update-notifier','--no-fund','--save'] } - return hooks.trigger("preUninstall", triggerPayload).then(() => { + return hooks.trigger("preUninstall", triggerPayload).then((result) => { // preUninstall passed // - run uninstall - log.trace(npmCommand + JSON.stringify(args)); - return exec.run(npmCommand,args,{ cwd: installDir}, true) + if (result !== false) { + let extraArgs = triggerPayload.args || []; + let args = ['remove', ...extraArgs, module] + log.trace(npmCommand + JSON.stringify(args)); + return exec.run(npmCommand,args,{ cwd: installDir}, true) + } else { + log.trace("skipping npm uninstall"); + } }).then(() => { log.info(log._("server.install.uninstalled",{name:module})); reportRemovedModules(list);