• DE
  • ES
  • EN
  • NL

Blog

Laravel Blade Lint: Template-Fehler vor der Produktion erkennen


Veröffentlicht am Sonntag, 1. Dezember 2024 von Jeroen Derks

Kurzfassung: Installieren Sie das Paket mit composer require --dev magentron/laravel-blade-lint und führen Sie anschließend php artisan blade:lint aus, um alle Ihre Blade-Templates zu validieren. Unterstützt wird Laravel 5.4 bis 11.

Das Problem: stille Template-Fehler

Blade-Templates können Syntaxfehler enthalten, die erst dann auftreten, wenn ein Benutzer die jeweilige Seite aufruft. Im Gegensatz zu PHP-Dateien, die während des Deployments auf ihre Syntax geprüft werden, werden Blade-Templates bedarfsgesteuert kompiliert — Fehler können also unbemerkt bis in die Produktion gelangen.

Häufige Probleme sind:

  • Nicht geschlossene @if-, @foreach- oder @section-Direktiven
  • Nicht übereinstimmende geschweifte Klammern in Ausdrücken
  • Ungültige PHP-Syntax innerhalb von Blade-Direktiven
  • Tippfehler in Direktiv-Namen

Die Lösung: Laravel Blade Lint

Ich habe Laravel Blade Lint entwickelt, um dieses Problem zu lösen. Es handelt sich um einen einfachen Artisan-Befehl, der alle Ihre Blade-Templates validiert, indem er sie zu PHP kompiliert und auf Syntaxfehler prüft — ohne dabei Code auszuführen.

Installation

# Install via Composer
composer require --dev magentron/laravel-blade-lint

Für Laravel 5.5 und höher wird der Service Provider automatisch erkannt. Für ältere Versionen fügen Sie den Service Provider manuell zu config/app.php hinzu.

Grundlegende Verwendung

# Alle Blade-Templates prüfen
php artisan blade:lint

# Bestimmtes Verzeichnis prüfen
php artisan blade:lint resources/views/emails

# Ausführliche Ausgabe
php artisan blade:lint -v

# Debug-Modus (kompiliertes PHP anzeigen)
php artisan blade:lint --debug

Hauptfunktionen

Multi-Prozess-Unterstützung

Bei großen Projekten mit Hunderten von Templates erkennt der Linter automatisch die verfügbaren CPU-Kerne und verteilt die Validierung auf mehrere Worker-Prozesse. Dies kann das Linten bei größeren Codebasen erheblich beschleunigen.

# 4 parallele Prozesse verwenden
php artisan blade:lint -p 4

# CPU-Kerne automatisch erkennen (Standard)
php artisan blade:lint

CI/CD-Integration

Der Befehl gibt einen Exit-Code ungleich null zurück, wenn Fehler gefunden werden, was ihn ideal für CI-Pipelines macht:

# GitHub Actions Beispiel
- name: Lint Blade templates
  run: php artisan blade:lint

# GitLab CI Beispiel
blade-lint:
  script:
    - php artisan blade:lint

Klare Fehlerausgabe

Wenn Fehler gefunden werden, erhalten Sie eine übersichtliche Ausgabe mit Dateiname, Zeilennummer und Fehlermeldung:

ERROR resources/views/users/profile.blade.php
  Line 42: syntax error, unexpected end of file, expecting "endif"

Unterstützte Laravel-Versionen

Das Paket ist getestet und wird gepflegt für:

  • Laravel 5.4, 5.5, 5.6, 5.7, 5.8
  • Laravel 6.x, 7.x, 8.x, 9.x, 10.x, 11.x

Voraussetzungen

  • PHP 7.0+ (PHP 8.0+ für Laravel 9+)
  • PCNTL-Erweiterung (für Multi-Processing, optional)

In Ihren Workflow integrieren

Ich empfehle, das Blade-Linten zu Ihren Pre-Commit-Hooks oder Ihrer CI-Pipeline hinzuzufügen. Die Ausführung dauert nur wenige Sekunden und kann Fehler abfangen, die sonst erst in der Produktion auftreten würden.

// composer.json scripts
{
    "scripts": {
        "lint": [
            "php artisan blade:lint",
            "./vendor/bin/phpstan analyse"
        ]
    }
}

Das Projekt ist auf GitHub verfügbar. Issues und Pull Requests sind willkommen.

Benötigen Sie Hilfe bei Laravel-Entwicklung oder Codequalität? Nehmen Sie Kontakt mit mir auf.