Ignition internal Folder Structure

Is there any documentation where is shown what each folder/file means?

As I know you get Ignition > data > projects but I don't know what folders should be inside projects, or what folders don't matter.

Question: Where could I find how Ignition folder/files hierarchy works?

Thx!

I thought we had some kind of reference page for this in the manual, but all I found was this, which is not quite the full story:

This old post of mine goes into more detail, though is a bit out of date:

Basically:
projects/ has an ignorable .resources/ folder.
All other folders in projects/ will be scanned - if they contain a valid project.json manifest, then they make up an Ignition project. The name of the project will be the literal name of the folder on disk.
Below each project directory, the next folder is the module ID, and the folder below that is the resource type ID. Those two folders make up a unique identifier for every Ignition project resource.

After that moduleID/typeID/ folder pair, things split into two paths.
If there is a resource.json file, then it is a so-called "singleton" resource - there can be either zero or one of any given singleton resource, and they have no name.
If there are any folders, they define the path to the given resource, ending with a folder that becomes the resource name and contains a resource.json file in it.

That resource.json file is described in the manual page linked above, but the most important entry is the files array that tells the resource system about the other files on disk.

So putting it all together:
data/projects/Test/ignition/global-props/resource.json
Is the path to a manifest file for the global-props resource (owned by the core Ignition platform, not any module) in a project named Test.

data/projects/CoolProject/com.inductiveautomation.perspective/views/myView/resource.json
Is the path to a manifest file for the myView Perspective view in a project named CoolProject.
By contrast,
data/projects/CoolProject/com.inductiveautomation.perspective/views/myFolder/myView/resource.json
Is the path to a manifest file for a view myView inside a folder myFolder in the same project.

The short answer to your question is:
Everything in that directory is important to you except the .resources/ folder.

7 Likes

Thanks! This actually helped me a lot

1 Like

Hi @paul-griffith! Wanna ask somethings about this, hope you can help me.

Could I add a .folder inside a project folder? Whenever I export/import it is going to be added to it?

I need a place inside the project where I could add some "documentation" files without losing it.

Any idea?

It won't. Not sure how could I add a file and also getting it to export :thinking:

In theory, you could:

  1. Add an arbitrary file as a sibling next to another resource and add it to the resource.json. This runs the risk of us wiping out whatever you added (depending on which code path we use internally, we may replace all the data files inside a resource; that'll vary by resource type and the way you're editing them)
  2. Stuff arbitrary meta data in the attributes inside the resource.json. This should be safer, it's much less likely that we'll replace all the attributes under a resource. The downside is that JSON is a really poor format for multiline strings, so the editing experience will be terrible without some editor heroics.

There is a documentation attribute on all resources - right click in the project browser. That's useful, but not necessarily a complete solution, and it's also hard to consume outside of the project browser.

Improving the tools to add your own documentation to resources is something we want to do first party, but no idea of a timeline.

1 Like

Does the file need to come with a project only, or with a full gateway deployment ?

You could bundle up any file you want in a docker image and deploy that.

Only with the project

Thank you!