PS: You can install npm-gui to more easily manage your packages and dependencies

See the details here.

But basically install npm-gui

As global dependency:

npm install -g npm-gui

or locally:

npm install npm-gui

Run it with

npm-gui

and open a browser and navigate to http://localhost:1337

I can only get this to work directly on the machine that it is running on, not from another machine on the network. There may be a way. I didn't try very hard.

On the page that opens, select the current project selector at the top right, select the packages.json file in your .node-red directory.

image

It will bring up a list of all of your install packages and their version. with upgrade availability.

This will of course work in any project directory by selecting the appropriate packages.json file or globally installed packages including node-red itself.

As always, your mileage may vary. Have fun and play safe.

Not really a Node-RED thing particularly. Especially since Node-RED already has direct npm support for contributed nodes.

However, the reason it isn't working from another machine is most likely that you have IPTABLES running on the server and it is blocking inbound access on that port number.

Are you referring to the Manage palette thing? I find that to be fairly awkward and slow to use.

And I'm not using iptables or any kind of firewall on that machine. It looks like it attaches to the localhost adapters, not the network adapter.

Are you referring to the Manage palette thing? I find that to be fairly awkward and slow to use.

Slow and ackward ? Perhaps there is a problem with your node-red installation ? What is wrong/happens with your 'manage palette' when you install nodes ?

Installing is fine. But upgrading is a pain. click upgrade, wait, click next upgradable module, wait... click next upgradable module wait.. open putty, login, restart node-red.. It's just a painful process.

This is an option. No one has to use it. But they may not be aware of it. So I posted this here.

An "update all" like-option would be nice, I agree.

But the npm-gui doesn't add much value in my opinion as you could use putty and issue from your .node-red directory: npm update

which will update all packages at once.

Follow it by node-red-stop, node-red-start (or node-red-restart if that is available)

npm update only updates to minor versions. The npm-gui shows minor version upgrade as well as the most recent version overall.

Manage palette does the same thing - which is the point.

Yes I understand, which is why i said:

I thought that npm update only updated within the specification of package.json whereas Manage Palette allows updating beyond that.

2 Likes

Yes. I think speed is down to perception rather than reality. Since Node-RED just calls out to npm so any difference in speed should be negligible.

In terms of awkwardness, I find it very easy to use indeed and saves the bother of having to look up npm package names and hunt down home pages - everything is in one place and easily searched.

Also, no problems with access from other devices :wink: and it ties into Node-RED's security model.

Ah, different issue. Yes, it would be nice to have an update all button. Why don't you put in a request or even a PR?

Urm, no you don't need to do that. At least if you are installed via a manager. You can restart Node-RED from within Node-RED. Though on Linux you need to make sure that the user id that runs Node-RED is able to issue sysctrl commands as sudo without needing to enter another password.

However, I must admit that I always check and update nodes from the command line, especially as I use an npm script to do everything.

Hmm, makes me think that another command in my alternate installer would be helpful - working how how NR is currently loaded/run and enabling it to be restarted via a single command.

I always do npm outdated before updating so I know exactly what I need to do. In addition to major version upgrades - which often require manual intervention which is why npm update doesn't do it, some nodes really need a full install sometimes - like the serial and sqlite nodes.

Except that npm has developed a nasty habbit of changing your dependency specs. For example, it often replaces the "*" spec which I often want to use with my dev machine.

Why wait after each upgradeable module?
I scroll down the node list clicking as I go with no waiting whatsoever. When I get to the bottom of the node list, I close the palette manager, and let them update in the background, whilst I do something else.

I generally restart node-RED about 15 minutes later (or when I remember :wink:)

That is useful to remember, I'd forgotten about that.

Still, it would be nice to have a button that updated everything and then reloaded the modules.

Sadly, I don't think it is possible to unload/reload modules in node.js?

But Node-RED could wait till all of the updates complete (promises would work well here) and then offer a user dialogue to restart itself.

1 Like

Say what now? Where's this?

Not sure what Julian is thinking of, but no, there is no such dialog. You have to manually restart.

node-red-restart in an exec node???
...but that I assume would restart node-RED with elevated privileges, and cause problems?

[{"id":"e16d1138.45111","type":"exec","z":"396e6d9.614e192","command":"sudo systemctl restart nrlive","addpay":true,"append":"","useSpawn":"","timer":"","name":"","x":300,"y":1520,"wires":[["7ba7c71a.091228"],["7ba7c71a.091228"],["7ba7c71a.091228"]]},{"id":"f213d338.4b65e","type":"inject","z":"396e6d9.614e192","name":"","topic":"","payload":"","payloadType":"str","repeat":"","crontab":"","once":false,"x":110,"y":1520,"wires":[["e16d1138.45111"]]},{"id":"7ba7c71a.091228","type":"debug","z":"396e6d9.614e192","name":"","active":true,"console":"false","complete":"false","x":530,"y":1520,"wires":[]},{"id":"b0a625b0.f18088","type":"comment","z":"396e6d9.614e192","name":"** DANGER!: Restart the Node-Red service **","info":"","x":230,"y":1480,"wires":[]},{"id":"54e7a83f.4bc0d8","type":"inject","z":"396e6d9.614e192","name":"","topic":"","payload":"","payloadType":"str","repeat":"","crontab":"","once":false,"x":110,"y":1620,"wires":[["11b3275a.b67c59"]]},{"id":"11b3275a.b67c59","type":"exec","z":"396e6d9.614e192","command":"sudo reboot now","addpay":false,"append":"","useSpawn":"","name":"","x":260,"y":1620,"wires":[["4a31df27.3e00b"],["4a31df27.3e00b"],["4a31df27.3e00b"]]},{"id":"4a31df27.3e00b","type":"debug","z":"396e6d9.614e192","name":"","active":false,"console":"false","complete":"false","x":530,"y":1620,"wires":[]},{"id":"a8091459.9fa1d8","type":"comment","z":"396e6d9.614e192","name":"** DANGER! Reboots the Pi running Node-Red, InfluxDB and MQTT **","info":"","x":310,"y":1580,"wires":[]},{"id":"4589dfca.bf6b7","type":"comment","z":"396e6d9.614e192","name":"TODO: Remove service name and pull from settings instead","info":"","x":640,"y":1480,"wires":[]}]

Not clever but it works fine on any Linux system using systemd. You do need to make sure that the user id running Node-RED has sudo without password rights to run the systemctrl command.


If you are not using systemd, you need to record the PID when starting so that you can kill the current process. But then it is hard to get something to restart Node-RED without a tool like PM2.

Any comments about my post above yours, Julian.