PHPackages                             grosv/shiftable-configs - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. grosv/shiftable-configs

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

grosv/shiftable-configs
=======================

Modify core Laravel configurations without modifying the config files themselves

0.1.4(5y ago)08MITPHPPHP ^7.1

Since Aug 6Pushed 5y ago1 watchersCompare

[ Source](https://github.com/grosv/shiftable-configs)[ Packagist](https://packagist.org/packages/grosv/shiftable-configs)[ RSS](/packages/grosv-shiftable-configs/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (5)Dependencies (5)Versions (6)Used By (0)

Shiftable Configs
=================

[](#shiftable-configs)

### This package is a work in progress and won't be considered production ready until I've used it to help upgrade a bunch of sites to Laravel 8 this fall

[](#this-package-is-a-work-in-progress-and-wont-be-considered-production-ready-until-ive-used-it-to-help-upgrade-a-bunch-of-sites-to-laravel-8-this-fall)

As [JMac](https://twitter.com/gonedark) points out in [Base Laravel](https://baselaravel.com/), new major versions of Laravel often come with new values in the default configuration files. If those values are missing post-upgrade it can lead to errors and sometimes those errors are tough to track down.

The best way to avoid this is to leave Laravel's core configurations in their default state and just use environment variables. That way when you upgrade, whether using [Laravel Shift](https://laravelshift.com/) or by hand, you can confidently pull in the new configuration files without worrying about losing any of your own settings.

This mostly works, but it does have its limitations. We have to deviate from this practice in the following situations:

- We have to add database connections, which requires editing config/databases.php
- We have to register aliases or providers manually, which requires editing config/app.php
- We want to use the app/services.php file for its intended use and add non-default servcies to it (I usually just create a separate configuration file for each service)

My personal approach is to do absolutely everything I possibly can outside the core configuration files, leaving myself with just this tiny list of times when I have to break the rules. Then I use this package to make sure my customizations survive an upgrade.

### Installation

[](#installation)

```
composer require grosv/shiftable-configs
```

### How Shiftable Configs Helps

[](#how-shiftable-configs-helps)

Shiftable Configs is a package that provides a command `php artisan make:shiftable-configs` that compares your configuration with the default configuration for your Laravel version (as determined by the requirement in your composer.json) and wherever the two are different, your customizations are saved to a new configuration file. No changes are made to your original configuration files.

Then the Shiftable Configs service provider merges the values in this default configuration file into your site's configuration in the boot method. This means that if you were to reset all the core configuration files in your site to their default state, all your settings would be preserved.

So an upgrade using Laravel shift would go something like this:

1. Run `php artisan make:shiftable-configs`
2. Do your shift
3. Run `php artisan make:shiftable-configs` again
4. Test and deploy your site.

### Linting and Testing

[](#linting-and-testing)

```
composer test:unit # Runs PHPUnit
composer lint # Runs php-cs-fixer to fix your coding style
composer test # Runs lint and then test:unit
```

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~8 days

Total

5

Last Release

2071d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/55eed7400c452edf7e7adfa4f1c6676b65b5ce1867fff6bddcb80b1bb45360af?d=identicon)[edgrosvenor](/maintainers/edgrosvenor)

---

Top Contributors

[![edgrosvenor](https://avatars.githubusercontent.com/u/1053395?v=4)](https://github.com/edgrosvenor "edgrosvenor (14 commits)")

---

Tags

configlaravel

###  Code Quality

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/grosv-shiftable-configs/health.svg)

```
[![Health](https://phpackages.com/badges/grosv-shiftable-configs/health.svg)](https://phpackages.com/packages/grosv-shiftable-configs)
```

###  Alternatives

[barryvdh/laravel-ide-helper

Laravel IDE Helper, generates correct PHPDocs for all Facade classes, to improve auto-completion.

14.9k123.0M684](/packages/barryvdh-laravel-ide-helper)[orchestra/canvas

Code Generators for Laravel Applications and Packages

21017.2M157](/packages/orchestra-canvas)[illuminate/pipeline

The Illuminate Pipeline package.

9446.6M210](/packages/illuminate-pipeline)[illuminate/pagination

The Illuminate Pagination package.

10532.5M858](/packages/illuminate-pagination)[spatie/laravel-pjax

A pjax middleware for Laravel 5

513371.8k11](/packages/spatie-laravel-pjax)[spatie/laravel-mix-preload

Add preload and prefetch links based your Mix manifest

169176.0k2](/packages/spatie-laravel-mix-preload)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
