Table of Contents
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Node-RED: External file proposal
The problem
Currently, the 3 code centric nodes (function
, template
and ui-template
) load their code from a window within the node’s configuration page. While this approach works fine for small single-person projects, it gets complicated in a multi-user project hosted on GIT.
Doing diffs and merging flow files with a large number of functions or templates is a manual process now. This could be improved greatly if there was an option, in addition to the current mechanism, to load the code content of these nodes from a file on the user’s file system.
We know some third party nodes do this but we think this should be integrated in the code. The main downside of using third party nodes is they need to be kept up to date with the core to reflect changes in the function or template nodes which is not always the case. Having this in the core would ensure that everything it up to date.
Proposition
We propose the addition of a checkbox named Load from external file
just above the code field. Checking this checkbox would make a field appear where the user can type the path to a file, similar to the file-in
node. Given the fact some cloud environment are not compatible with a traditional file system, a setting named allowExternalFiles
could be added in settings.js
to disable this feature entirely. The feature could be disabled by default to avoid confusing new users.
In that mode, the code editor could show the code but in greyed out mode, similar to how the Arduino IDE works when using external files. Another option would be to be able to start prototyping a function in Node-RED's editor and have the option to then save it to file. Once save to disk, the editor would be in read-only mode and the file contents would update when the file is saved externally.
Exporting flows
This brings one problem, what happens when someone exports a flow ? We propose the addition of a checkbox in the flow export dialog named Embed external files
that would embed the external file contents within the exported flow making sharing of that flow possible.
Another possibility would be to have some sort of Export project
option that would export a zip file containing the flow file, settings.js, lib folder and external files.