Dev-only Laravel config

January 20, 2023

Introduction

A key feature of Laravel is the way configuration files are handled. Configuration files are used to store and access a wide range of settings and parameters relevant for the application. As well as storing data like database connection strings or third-party service’s keys, they can also include application-specific data such as the title, authentication information, and other configuration settings.

A Growing Problem

Configuration files can easily become bloated and grow out of hand. This is especially true when working with third-party packages. Many third-party packages also use configuration files to configure their settings.

Unfortunately, some of these packages are only meant to run on a development or CI/CD environment, but they will still introduce big configuration files into every production request.

Packages like enlightn, debugbar, laravel telescope are usually not used in production, yet they still contain a big configuration file that will be shipped to your production application.

A Possible Solution

My suggestion to handle this problem is to disable these developer-only configuration files on production. By ignoring certain configuration files, production can keep their configuration files lightweight and optimized.

config/debugbar.php

<?php

if (env('APP_ENV', 'production') === 'production') {
    return [
        'enabled' => false,
    ];
}

return [

    /*
    |--------------------------------------------------------------------------
    | Debugbar Settings

Disclaimer

1) We can’t use app()->environment(...) inside config files because this method internally uses the config. Instead, we can use env('APP_ENV')

2) In third-party packages we can’t return an empty array [] because Laravel will use the package’s default configuration if no local configuration is found. Having at least one property will override this behavior and still keep a slim configuration for production.

3) Having a different configuration for production can cause unexpected and untested results, so it is very important you are confident the code will fall back correctly.

Have you found this helpful?
Follow me on for more.