Dateien ausschließen

Wie sich zusätzliche Dateisystems-Pfade in Qgoda für die Verarbeitung ausschließen oder einschließen lassen.

In der Voreinstellung verarbeitet Qgoda weder versteckte Dateien oder Verzeichnisse (deren Namen beginnen mit einem .), noch Dateien und Verzeichhnisse auf der höchsten Ebene, deren Namen mit einem Unterstrich _ beginnen.

Zusätzliche Dateien ausschließen

Das Standardverhalten lässt sich ändern, indem weitere Suchmuster in der Variablen exclude in der Konfigurationsdatei _config.yml hinterlegt werden.

Beispiel:

exclude:
- /node_modules
- /package.json
- /webpack.config.js
- assets/images/**/*.xcf

Damit werden auf der höchsten Ebene auch die Verzeichnisse das Verzeichnis node_modules, sowie die Dateien package.json und webpack.config.js ignoriert. Weiterhin werden auch alle XCF-Dateien (das Bildformat des Bildverarbeitungsprogramms Gimp im Verzeichnis assets/images und all seinen Unterverzeichnissen von der Verarbeitung ausgeschlossen.

Die Seite Suchmusterlisten liefert weitergehene Informationen über Dateinamensmuster und Listen solcher Muster in Qgoda.

Automatisch ausgeschlossene Dateien

Intern wird die konfigurierte Ausschluss-Liste nicht direkt verwendet. Die tatsächliche Liste ist etwas erweitert. Für das obige Beispiel würde die vollständige Liste so aussehen:

exclude:
- .*
- /_*
- /node_modules
- /package.json
- /webpack.config.js
- assets/images/**/*.xcf
- /_site

Die ersten beiden Zeilen schließen Dateien und Verzeichnisse aus, deren Namen mit einem Punkt . oder Dateien und Verzeichnisse auf der höchsten Ebene, deren Namen mit einem Untertrich beginnen, aus.

Die letzte Zeile wird grundsätzlich angehangen und stellt einen Schutzmechanismus gegen Konfigurationsfehler dar. Wird das Ausgabeverzeichnis _site eingeschlossen, würde das zu einer Endlosschleife führen. Das Ausgabeverzeichnis wird deshalb am Ende immer explizit ausgeschlossen.

Dateien einschließen

Es gibt keine Konfigurationsvariable include. Statt dessen lassen sich ausgeschlossene Datei wieder einschließen, indem dem entsprechenden Suchmuster ein Ausrufezeichen ! vorangestellt wird. Das Muster wird dadurch negiert:

exclude:
- /node_modules
- /package.json
- /webpack.config.js
- assets/images/**/*.xcf
- "!/_posts"

Mit dieser Einstellung würden alle Dateien, die im auf der höchsten Ebene liegenden Verzeichnis _posts liegen, wieder eingeschlossen.

Es ist jedoch zu beachten, dass Dateien und Verzeichnisse nicht wieder eingeschlossen werden können, wenn eines ihrer Elternverzeichnisse durch eine vorhergehende Regel bereits ausgeschlossen wurde.

Beispiel:

exclude:
- /archive
- "!/archive/2017"

Das zweite Muster ist ungültig und wird ignoriertm weil /archive ein Elternverzeichnis von /archive/2017 ist.

Dieses Verhalten dient der Effizienssteigerung. Wenn Qgoda Dateien zur Verarbeitung sucht, steigt es nicht in ausgeschlossene Verzeichnisse herab. Im obigen Beispiel würde der Inhalt von archive nicht gelesen, und daher auch das Unterverzeichnis archive/2017 nie geöffnet.

Daraus ergibt sich ein kleines Problem, wenn man ein Unterverzeichnis eines automatisch ausgeschlossenen Verzeichnisses, zum Beispiel _experiments/stable wieder einschließen will. Dazu muss man einen kleinen Umweg gehen:

exclude:
- "!/_experiments"
- /_experiments/*
- "!/_experiments/stable"

Dazu muss man sich erinnern, dass Qgoda der Liste automatisch das Muster /_ vorangestellt hat. Zeile 1 re-inkludiert jetzt _experiments, Zeile 2 schließt alle Unterverzeichnisse aber direkt wieder aus. Dafür schließt Zeile 3 das Verzeichnis _experiments/stable wieder ein.

Dateien von der Überwachung im Watch-Modus ausschließen

Eine weitere Konfigurationsvariable exclude-watch gibt Dateien und Verzeichnisse an, die im Watch-Modus keine Neu-Generierung der Site auslösen sollen, an. Wird diese Variable weggelassen, wird stattdessen der Inhalt von exclude genommen.

Note that Qgoda by default re-includes the directory _views.

Beispiel:

exclude-watch:
- assets/movies

Die Liste, die tatsächlich von Qgoda verwendet wird, sieht so aus:

exclude-watch:
- .*
- /_*
- "!/_views"
- assets/movies
- /_site

You can see that the directory _views has been re-included because it contains layout and design files.