wp easy-svg icons validate
Prüft einen Ordner mit SVG-Dateien gegen Sanitizer und Härter dieser Website, ohne etwas zu importieren. Mit --strict scheitert ein CI-Job bei jeder Ablehnung.
WP-CLI-Befehl · Easy SVG Pro · Status: Stabil
Dieser Befehl ist ein Probelauf. Er liest jedes SVG in einem Ordner, schickt es durch genau den Sanitizer und Härter, den ein Import auf dieser Seite verwenden würde, und sagt dir pro Datei, ob sie behalten würde. Es wird nichts geschrieben und nichts registriert. Mit --strict scheitert er, sobald auch nur eine Datei übersprungen würde. So wird daraus eine Qualitätsschranke für dein Icon-Repository.
Verwendung
wp easy-svg icons validate <dir> [--strict]
Wann du es brauchst
- Bevor du Icons von einer Designerin in den Ordner
assets/iconseines Themes oder in einen Drop-in-Ordner committest. - In der CI bei jedem Pull Request, der Icons ändert, damit eine Datei, die die Seite ablehnen würde, nie in Produktion landet.
- Vor
wp easy-svg icons import, um zu sehen, was kopiert und was übersprungen würde. - Nachdem du die Allow-Liste im Konfigurator erweitert oder verkleinert hast, um zu sehen, welche Icons auf dieser Seite betroffen sind.
Ein ZIP-Paket prüfst du damit nicht. Der Befehl liest nur einzelne .svg-Dateien in einem Ordner. Importier das Paket lieber auf einer Staging-Seite mit wp easy-svg pack import.
Parameter
Der Ordner, der geprüft wird. Gelesen werden nur *.svg-Dateien direkt darin, keine Unterordner. Relative Pfade gehen vom Verzeichnis aus, in dem WP-CLI läuft.
Nach der Tabelle mit einem Fehler und Exit-Code 1 abbrechen, sobald eine Zeile nicht ok ist.
Rückgabewert
Eine Zeile pro Datei mit den Spalten file, slug, status und reason. status ist ok oder skipped. reason ist bei ok leer, sonst einer von bad-name, duplicate, unreadable, not-svg oder no-drawing.
Ohne --strict immer 0, egal was in der Tabelle steht. Mit --strict 1, sobald mindestens eine Datei übersprungen wurde. Außerdem 1, wenn Lizenz oder Funktion WP-CLI aus sind, Easy SVG Support inaktiv ist oder zu alt zum Härten.
Standardwert
Ohne --strict meldet der Befehl nur und endet immer mit 0, sobald er gelaufen ist.
Beispiele
Einen Ordner von Hand prüfen
wp easy-svg icons validate ./wp-content/themes/acme/assets/icons
+----------------------+----------+---------+------------+
| file | slug | status | reason |
+----------------------+----------+---------+------------+
| .../icons/phone.svg | phone | ok | |
| .../icons/Phone.svg | phone | skipped | duplicate |
| .../icons/empty.svg | empty | skipped | no-drawing |
+----------------------+----------+---------+------------+
Einen Pull Request in der CI absichern
#!/usr/bin/env bash
set -euo pipefail
ICONS_DIR="wp-content/themes/acme/assets/icons"
# Ein falscher Pfad würde still durchgehen, also sicherstellen, dass es etwas zu prüfen gibt.
count=$(find "$ICONS_DIR" -maxdepth 1 -name '*.svg' | wc -l)
if [ "$count" -eq 0 ]; then
echo "Keine SVG-Dateien in $ICONS_DIR gefunden" >&2
exit 1
fi
wp easy-svg icons validate "$ICONS_DIR" --strict
Jeden Unterordner eines Icon-Repositorys prüfen
Der Befehl arbeitet nicht rekursiv, also läufst du selbst über die Ordner und sammelst das Ergebnis:
status=0
for dir in icons/*/; do
echo "== $dir"
wp easy-svg icons validate "$dir" --strict || status=1
done
exit $status
Defensiv: kaputtes Setup von schlechtem Icon unterscheiden
if ! wp plugin is-active easy-svg; then
echo "Easy SVG Support ist nicht aktiv, es kann nichts geprüft werden." >&2
exit 2
fi
wp easy-svg icons validate ./icons --strict
So funktioniert es
- Die Prüfung stellt sicher, dass die Lizenz aktiv und die Funktion WP-CLI an ist. Ein Benutzer oder eine Berechtigung ist nicht nötig.
- Der Befehl holt sich den Sanitizer der Seite aus Easy SVG Support und prüft, ob
easy_svg_harden_icon_markup()existiert. Fehlt eins davon, bricht er ab, weil ein Ergebnis aus einer schwächeren Prüfung nicht dem entspräche, was ein Import speichert. - Er listet
<dir>/*.svgund behandelt jede Datei in dieser Reihenfolge:- Der Slug ist der Dateiname ohne
.svg, kleingeschrieben, jede Folge anderer Zeichen wird zu-. Ergibt der Name keinen gültigen Slug, lautet der Grundbad-name. - Eine zweite Datei mit demselben Slug (
Phone.svgundphone.svg) istduplicate. Die erste gewinnt. - Eine leere oder nicht lesbare Datei ist
unreadable. - Lehnt der Sanitizer sie ab:
not-svg. - Bleibt nach dem Härten kein
<svg>mit mindestens einem Kindelement übrig:no-drawing.
- Der Slug ist der Dateiname ohne
- Die Tabelle wird ausgegeben. Mit
--strictbricht der Befehl danach bei der ersten Zeile ab, die nichtokist.
Geprüft wird mit der Allow-Liste dieser Seite, einschließlich der Tags und Attribute, die über den Konfigurator oder den Filter esw_svg_allowed_tags dazukamen. Derselbe Ordner kann also auf einer Seite durchgehen und auf einer anderen scheitern.
Stolperfallen
- Ein falscher Pfad geht durch. Ein Ordner, den es nicht gibt oder der keine
.svg-Dateien enthält, ergibt eine leere Tabelle und Exit-Code0, auch mit--strict. Prüf, ob der Ordner Dateien hat, bevor du einem grünen CI-Lauf traust. - Nicht rekursiv. Dateien in Unterordnern werden nicht geprüft. Lauf selbst über die Unterordner.
- Keine Größenprüfung. Dateien werden nicht gegen
easy_svg_pro_source_file_max_bytes(2 MB) gemessen. Eine Datei, die hier durchgeht, kann als Quellordner trotzdem alstoo-largeabgelehnt werden. - Das Manifest wird ignoriert.
manifest.jsonwird nicht gelesen. Namen kommen nur aus den Dateinamen, eine vom Manifest umbenannte Datei wird also unter ihrem Dateinamen geprüft, und ein kaputtes Manifest lässt die Prüfung nicht scheitern, obwohl der Ordner als Quelle nichts registrieren würde. Für Manifest-Fehler nimmwp easy-svg icons problemsauf dem echten Ordner. - Ohne
--strictbleibt die CI grün. Der einfache Befehl endet immer mit0, sobald er gelaufen ist. - Großgeschriebene Endungen. Die Liste sucht genau nach
*.svg,ICON.SVGwird auf einem Dateisystem mit Groß- und Kleinschreibung also nicht gelesen.