Standard File and Directory Set

Antora collects and processes content source files according to a set of hierarchical files and directories it expects to find at a content source root. This page introduces this hierarchy, the reserved directory and file names it employs, and the rules about which files get collected or ignored.

Hierarchy and reserved names

The set of files and directories, the reserved file and directory names, and their hierarchy that starts at a content source root—​collectively referred to as Antora’s standard file and directory set — helps Antora determine which files to collect, the role of each file, how to classify each file, and which files to ignore. Example 1 shows the hierarchy Antora expects if all of the required and optional files and directories that make up the standard file and directory set are used.

Example 1. All required and optional files and directories of a standard file and directory set located at a repository root
📒 repository (1)
  📄 antora.yml (2)
  📂 modules (3)
    📂 ROOT (4)
      📁 attachments (5)
      📁 examples (6)
      📁 images (7)
      📁 pages (8)
      📁 partials (9)
      📄 nav.adoc (10)
    📂 named-module (11)
      📁 pages
      📄 nav.adoc (12)
  📁 packages (13)
1The repository root and the content source root. By default, Antora assumes the content source root is at the root of a repository unless the start_path or start_paths key is assigned a value on a content source in your site’s playbook.
2A component version descriptor file, named antora.yml (reserved file name), is required at each content source root. An antora.yml file indicates to Antora that the contents of a directory named modules should be collected and processed.
3Required directory named modules (reserved directory name). A modules directory must be located at the same hierarchical level as an antora.yml file in a content source root. That is, the antora.yml file and modules directory are siblings. A modules directory must contain, at a minimum, either a ROOT module directory or a named module directory.
4Optional ROOT module directory. Antora applies special behavior to the publishable resources in a ROOT module directory. ROOT is a reserved directory name and must be in all uppercase letters. A module directory must contain at least one family directory.
5Optional attachments family directory (reserved directory name).
6Optional examples family directory (reserved directory name).
7Optional images family directory (reserved directory name).
8Optional pages family directory (reserved directory name).
9Optional partials family directory (reserved directory name).
10Optional navigation file named nav.adoc.
11Optional named module directory. You can create as many named module directories as you require. A module directory must contain at least one family directory.
12Optional navigation file named nav.adoc.
13Antora won’t process the files in this directory because it’s located outside the modules directory.

In Example 1, the content source root is located at the root of the repository. However, a content source root doesn’t have to be at the root of a repository. In Example 2, the content source root is located in a directory of the repository.

Example 2. All required and optional files and directories of a standard file and directory set located in a directory of a repository
📒 repository (1)
  📁 config (2)
  📂 docs (3)
    📄 antora.yml
    📂 modules
      📂 ROOT
        📁 attachments
        📁 examples
        📁 images
        📁 pages
        📁 partials
        📄 nav.adoc
      📂 named-module
        📁 pages
    📁 notes (4)
  📄 README.adoc (5)
1Repository root
2Antora ignores this directory because it isn’t specified as the content source root in the site’s playbook (for the purposes of this example).
3The content source root as specified in the site’s playbook using the start_path or start_paths key (for the purposes of this example).
4Antora won’t process the files in this directory because it’s located outside the modules directory.
5Antora ignores this file because it isn’t in the content source root.

Many of the directories shown in Example 1 and Example 2 are optional. You only have to set up one module directory—​and it can be a ROOT or named module directory—​if that’s all you need. Also, you only need to set up the family directories in a module directory that best apply to the type and purpose of your source files. For example, if you aren’t inserting any images into the pages stored in a module directory, then you don’t need to create an images directory.

In the next section, you can see two content source examples that meet Antora’s minimum requirements of a valid standard file and directory set.

Minimum requirements

From a content source root, Antora must find:

  • An antora.yml file located at the content source root

  • A modules directory located at the same hierarchical level as an antora.yml file

  • At least one module directory in the modules directory

  • At least one family directory containing at least one source file in the module directory

Let’s look at two examples showing standard file and directory sets that meet the minimum requirements. The directory and file set in Example 3 is valid because it contains the required antora.yml and modules directory at the content source root. The modules directory contains one module directory, in this case the special ROOT module directory. In turn, the ROOT module directory contains a family directory that contains one source file.

Example 3. Valid standard file and directory set containing a ROOT module directory
📒 repository (1)
  📄 antora.yml (2)
  📂 modules (3)
    📂 ROOT (4)
      📂 pages (5)
        📄 page-source-file.adoc (6)
1In this example, the content source root is at the root of the repository.
2Component version descriptor file, with the valid filename antora.yml.
3modules directory.
4ROOT module directory.
5pages family directory.
6Source file of a page.

In Example 4, the content source root is located at the directory ops-training.

Example 4. Valid standard file and directory set containing a named module directory
📒 repository
  📂 courses
    📂 ops-training (1)
      📄 antora.yml (2)
      📂 modules (3)
        📂 rz-interface (4)
          📂 images (5)
            📄 image-source-file.ext (6)
1Content source root.
2Component version descriptor file, with the valid filename antora.yml.
3modules directory.
4A module directory named rz-interface.
5images family directory.
6Source file of an image.

The standard directory and file set in Example 4 is also valid.

Hidden and unpublished files

A hidden file is any file stored in Antora’s standard directory hierarchy that begins with a dot (.). Files that don’t have file extensions are also hidden, unless they’re stored in an examples directory or partials directory. Hidden files do not get added to Antora’s content catalog, and therefore aren’t assigned a resource ID, can’t be referenced, and aren’t published.

Example 5. Standard directory set containing hidden files
📒 repository
  📄 antora.yml
  📂 modules
    📂 ROOT
      📂 examples
        📄 .hidden-example-file.ext (1)
        📄 example-file (2)
      📂 pages
        📄 .hidden-page-file.adoc (3)
        📄 hidden-page-file (4)
1Antora won’t load this example file into the content catalog because its filename begins with a dot (.).
2Files stored in the examples directory aren’t required to have a file extension, therefore Antora will load this example file into the content catalog.
3Antora won’t load this page file into the content catalog or publish it because its filename begins with a dot (.).
4Antora won’t load this page file into the content catalog or publish it because it’s missing a file extension and page files must have a file extension.

An unpublished file is any file stored in Antora’s standard directory hierarchy that begins with an underscore (_). An unpublished file is added to the content catalog, assigned a resource ID (if applicable), and can be referenced. However, an unpublished file isn’t automatically published, even if it’s stored in the folder of a publishable family (that is, pages, images, or attachments).

Example 6. Standard directory set containing unpublished files
📒 repository
  📄 antora.yml
  📂 modules
    📂 ROOT
      📂 images
        📄 _unpublished-image-file.ext (1)
      📂 pages
        📄 _unpublished-page-file.adoc (2)
1An image file with a filename that begins with an underscore (_) is loaded into the content catalog and can be referenced by an image macro. However, the image won’t be published automatically even though it’s stored in the folder of a publishable family.
2A page file with a filename that begins with an underscore (_) is loaded into the content catalog and can be referenced by an include directive. However, the page can’t be referenced by an xref macro because it won’t be published as its own page even though it’s stored in the folder of a publishable family.