https://github.com/backdevs/laravel-dotenv-sniffer
A code sniffer for environment variables NOT declared in .env files
https://github.com/backdevs/laravel-dotenv-sniffer
ci-cd composer-package dotenv dotenv-support laravel php sniffer
Last synced: about 1 month ago
JSON representation
A code sniffer for environment variables NOT declared in .env files
- Host: GitHub
- URL: https://github.com/backdevs/laravel-dotenv-sniffer
- Owner: backdevs
- License: mit
- Created: 2023-03-03T14:35:10.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-02-14T10:58:03.000Z (5 months ago)
- Last Synced: 2025-05-07T23:10:02.223Z (2 months ago)
- Topics: ci-cd, composer-package, dotenv, dotenv-support, laravel, php, sniffer
- Language: PHP
- Homepage: https://packagist.org/packages/backdevs/dotenv-sniffer
- Size: 399 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Laravel Dotenv Sniffer
A code sniffer for environment variables **not** declared in `.env` files[](https://github.com/backdevs/laravel-dotenv-sniffer/actions/workflows/test.yml)
[](https://github.com/backdevs/laravel-dotenv-sniffer/releases/latest)
While working on large projects we've noticed that `.env.example` files would often get outdated. \
This tool provides a fast and simple way of constantly checking your code against `.env` files either as a step in your CI/CD pipeline, a Git hook or whatever works best for your project.---
## Requirements
- [PHP](https://www.php.net/downloads) `^8.1`
- [Tokenizer extension](https://www.php.net/manual/en/book.tokenizer.php)## Usage
### Docker (recommended)
Inside your app's root directory, run:
```shell
docker run -t --rm -v $(pwd):/app backdevs/desniff:latest .env.example ./config ./app
````### Composer dependency
```shell
composer require --dev backdevs/dotenv-sniffer
```
```shell
vendor/bin/desniff .env.example ./config ./app
```### PHAR
```shell
curl -fsSL https://github.com/backdevs/php-dotenv-sniffer/releases/latest/download/desniff.phar -o /tmp/desniff
```
```shell
chmod +x /tmp/desniff
```
```shell
/tmp/desniff .env.example ./config ./app
```## Options and Arguments
Options
- `--no-fail` - Don't fail if errors are found (exit code = 0)
- `-w | --warn-with-default` - Treat variables with default values in [Laravel](https://laravel.com/)\'s [`env()`](https://laravel.com/docs/10.x/helpers#method-env) calls as warnings
- `-c | --fail-code` - The exit code to use when failing (default: 1), useful in CI/CD pipelinesArguments
- `env-file` - The .env file to check against (e.g.: `.env`, `.env.example`, `.env.dev`)
- `paths` - One or more files and/or directories to check## Simple Example
### The `.env.example` file:
```dotenv
APP_NAME=DotenvSnifferDB_HOST=localhost
```### The `config.php` file:
```php
[
'name' => env('APP_NAME'),
'key' => Env::get('APP_KEY', sprintf('base64:%s', base64_encode('example'))),
],'mysql' => [
'host' => env('DB_HOST', 'localhost'),
'username' => getenv('DB_USERNAME'),
'password' => \Illuminate\Support\Env::get('DB_PASSWORD', 'secret'),
'database' => $_ENV['DB_DATABASE'],
],
];
```### Output for `vendor/bin/desniff -w .env.example config.php`
