renoki-co / laravel-yaml-config
The usual Laravel config files, but with one YAML. Write objects and arrays in your config without having to write ugly inline, JSON.
Fund package maintenance!
rennokki
Requires
- ext-yaml: *
- laravel/framework: ^9.35
Requires (Dev)
- mockery/mockery: ^1.5
- orchestra/testbench: ^7.0
- orchestra/testbench-core: ^7.0
- phpunit/phpunit: ^9.5.25
- dev-master
- 0.1.0
- dev-dependabot/github_actions/shivammathur/setup-php-2.30.5
- dev-dependabot/composer/orchestra/testbench-tw-7.42
- dev-dependabot/composer/orchestra/testbench-core-tw-7.43
- dev-dependabot/github_actions/actions/checkout-4.1.6
- dev-dependabot/github_actions/codecov/codecov-action-4.4.1
- dev-dependabot/composer/phpunit/phpunit-tw-9.6.19
- dev-dependabot/github_actions/actions/cache-4.0.2
This package is auto-updated.
Last update: 2024-11-03 20:42:46 UTC
README
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.