1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00
0 Design: external file for function and templates nodes
Nathanaël Lécaudé edited this page 2017-05-15 10:47:42 -04:00
This file contains ambiguous Unicode characters

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 nodes 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 users 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.