fr3on/laravel-drift

Pre-deploy environment validation & config drift detection for Laravel applications.

Maintainers

Package info

github.com/fr3on/laravel-drift

pkg:composer/fr3on/laravel-drift

Statistics

Installs: 10

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

0.0.1 2026-04-10 13:40 UTC

This package is auto-updated.

Last update: 2026-04-10 16:58:06 UTC


README

Latest Version on Packagist PHP Version Laravel Version GitHub Tests Action Status Total Downloads

Laravel Drift is a pre-deploy environment validation and configuration drift detection tool. It acts as a gatekeeper, comparing your .env against .env.example and running safety checks before your application boots.

Key Features

  • No-Boot Validation: Runs without booting the Laravel application container for maximum safety and speed.
  • Drift Detection: Identifies missing keys in .env or orphan keys in .env.example.
  • Safety Gates: Prevents common deployment disasters like APP_DEBUG=true in production or using placeholder APP_KEY values.
  • Extensible Rules: Easily add your own custom validation rules.
  • CI/CD Integration: Simple exit code contracts to block failing builds.

Installation

You can install the package via composer:

composer require fr3on/laravel-drift

You can publish the config file with:

php artisan vendor:publish --tag="drift-config"

Usage

Run the drift check:

php artisan drift:check

In your CI/CD pipeline, use the --strict flag to treat warnings as errors:

php artisan drift:check --strict

Built-in Rules

Rule Description Status
AppDebugRule Ensures APP_DEBUG is false when APP_ENV is production. Fail
AppKeyRule Validates presence, length, and ensures no placeholder values are used. Fail
CompletenessRule Compares .env keys against .env.example. Fail/Warn
QueueDriverRule Warns if QUEUE_CONNECTION=sync is used in production. Warn

Custom Rules

You can create custom rules by implementing the Fr3on\Drift\Contracts\DriftRule interface:

use Fr3on\Drift\Contracts\DriftRule;
use Fr3on\Drift\EnvMap;
use Fr3on\Drift\RuleResult;

class MyCustomRule implements DriftRule
{
    public function check(EnvMap $env, EnvMap $example): RuleResult
    {
        if ($env->missing('MY_REQUIRED_KEY')) {
            return RuleResult::fail('MY_REQUIRED_KEY is missing!');
        }

        return RuleResult::pass();
    }
}

Register your rules in config/drift.php.

Credits

License

The MIT License (MIT). Please see License File for more information.