laravel-yaml-config maintained by renoki-co
Laravel YAML Config
The usual Laravel config files, but with one YAML file. Write objects and arrays in your config without having to write ugly inline, JSON.
🚀 Installation
You can install the package via composer:
composer require renoki-co/laravel-yaml-config
Publish the config:
php artisan vendor:publish --provider="RenokiCo\LaravelYamlConfig\LaravelYamlConfigServiceProvider" --tag="config"
🙌 Usage
This package makes sure you don't have to use inline-JSON in your .env files that would look like this:
AWS_CLUSTERS='[{"region": "us-east-1", "url": "..."}, {"region": "eu-west-1", "url": "..."}]'
// config/clusters.php
return [
'aws' => env('AWS_CLUSTERS', json_encode([
// create a default for it
])),
];
First, create a local .laravel.yaml file in your root Laravel project:
touch .laravel.yaml
Declare your configuration in YAML:
clusters:
aws:
- region: us-east-1
url: https://...
- region: eu-west-1
url: https://...
google:
- region: europe-west1
url: https://...
foreach (config('clusters.aws') as $cluster) {
// $cluster['region']
}
You shouldn't commit your .laravel.yaml files to your code repo:
echo ".laravel.yaml\n.laravel.yml" >> .gitignore
Replacing nested variables
While the package lets you set arbitrary config without messing with ugly encoded JSON, you can still use it to update nested variables with already-existing configuration:
database:
connectons:
mysql:
host: mysql
clusters:
aws:
# ...
Declaring defaults
While you shouldn't commit your .laravel.yaml file, you can commit a .laravel.defaults.yaml file that can contain defaults for specific configs you have declared:
touch .laravel.config.yaml
clusters:
aws: []
google: []
Sequential lists
Take extra caution when declaring defaults for lists of items:
# .laravel.defaults.yaml
clusters:
- region: us-east-1
- region: eu-west-1
When a config that contains lists that are pre-filled, with a .laravel.yaml like this, an odd behavior appears:
# .laravel.yaml
clusters:
- region: ap-south-1
When you'd expect the final value of clusters to contain only one item, it will actually contain two items, with the first one being replaced instead:
// 'clusters' => [
// ['region' => 'ap-south-1'],
// ['region' => 'eu-west-1'],
// ]
dump(config('clusters'));
🐛 Testing
vendor/bin/phpunit
🤝 Contributing
Please see CONTRIBUTING for details.
🔒 Security
If you discover any security related issues, please email alex@renoki.org instead of using the issue tracker.