• DE
  • ES
  • EN
  • NL

Blog

Laravel Blade Lint: vang template fouten voor productie


Geplaatst op zondag 1 december 2024 door Jeroen Derks.

TL;DR: Installeer met composer require --dev magentron/laravel-blade-lint, voer dan php artisan blade:lint uit om al je Blade templates te valideren. Ondersteunt Laravel 5.4 tot en met 11.

Het probleem: stille template fouten

Blade templates kunnen syntaxfouten bevatten die alleen aan het licht komen wanneer een gebruiker die specifieke pagina bezoekt. In tegenstelling tot PHP-bestanden die tijdens deployment op syntax worden gecontroleerd, worden Blade templates on-demand gecompileerd — wat betekent dat fouten onopgemerkt kunnen blijven tot in productie.

Veelvoorkomende problemen zijn:

  • Niet afgesloten @if, @foreach, of @section directives
  • Niet-matchende accolades in expressies
  • Ongeldige PHP syntax binnen Blade directives
  • Typefouten in directive namen

De oplossing: Laravel Blade Lint

Ik heb Laravel Blade Lint gemaakt om dit probleem op te lossen. Het is een eenvoudig Artisan commando dat al je Blade templates valideert door ze naar PHP te compileren en te controleren op syntaxfouten — zonder code uit te voeren.

Installatie

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

Voor Laravel 5.5+ wordt de service provider automatisch gevonden. Voor oudere versies voeg je de service provider handmatig toe aan config/app.php.

Basisgebruik

# Lint alle Blade templates
php artisan blade:lint

# Lint specifieke directory
php artisan blade:lint resources/views/emails

# Uitgebreide output
php artisan blade:lint -v

# Debug modus (toon gecompileerde PHP)
php artisan blade:lint --debug

Belangrijkste functies

Multi-process ondersteuning

Voor grote projecten met honderden templates detecteert de linter automatisch beschikbare CPU-kernen en verdeelt de validatie over meerdere worker processen. Dit kan het linten van grotere codebases aanzienlijk versnellen.

# Gebruik 4 parallelle processen
php artisan blade:lint -p 4

# Detecteer CPU-kernen automatisch (standaard)
php artisan blade:lint

CI/CD integratie

Het commando retourneert een non-zero exit code wanneer fouten worden gevonden, wat het perfect maakt voor CI pipelines:

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

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

Duidelijke foutrapportage

Wanneer fouten worden gevonden, krijg je duidelijke output met het bestand, regelnummer en foutmelding:

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

Ondersteunde Laravel versies

Het package is getest en onderhouden voor:

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

Vereisten

  • PHP 7.0+ (PHP 8.0+ voor Laravel 9+)
  • PCNTL extensie (voor multi-processing, optioneel)

Voeg het toe aan je workflow

Ik raad aan om Blade linting toe te voegen aan je pre-commit hooks of CI pipeline. Het duurt enkele seconden om uit te voeren en kan fouten vangen die anders alleen in productie zouden verschijnen.

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

Bekijk het project op GitHub. Issues en pull requests zijn welkom.

Hulp nodig met Laravel development of codekwaliteit? Neem dan gerust contact op.