
Проверка использования переменных окружения в кодовой базе
Сканируйте свою кодовую базу, чтобы обнаружить все ссылки на переменные окружения. Это помогает выявить отсутствующие, неиспользуемые, дублирующиеся и неправильно используемые переменные на раннем этапе, до того как они вызовут ошибки во время выполнения.
Полноценная поддержка SvelteKit, Next.js и Nuxt. Также отлично работает в современных проектах на JavaScript/TypeScript и фреймворках, таких как Node.js и Vue — или в любой другой настройке, где вам нужно надёжное сравнение файлов .env.
✨ Отмечен в awesome-cli-apps — Курируемый список отличных CLI-приложений

→ См. Документацию по возможностям для подробностей о том, что проверяет сканер и как он работает.
--init)Сгенерируйте файл конфигурации по умолчанию:
dotenv-diff --init
→ См. Документацию по конфигурации для более подробной информации.
Легко интегрируйте dotenv-diff в свои Git-хуки или конвейеры CI/CD, чтобы обеспечить согласованность переменных окружения.
→ См. Документацию по Git-хукам для более подробной информации.
В проектах SvelteKit, Next.js и Nuxt dotenv-diff обнаруживает неправильное использование переменных окружения, специфичное для фреймворка.
▸ Framework issues (SvelteKit)
──────────────────────────────────────────────────────────────────────
PUBLIC_API_URL $env/dynamic/private
variables must not start
with "PUBLIC_"
src/routes/+page.server.ts:3
──────────────────────────────────────────────────────────────────────
→ См. Документацию по фреймворкам для более подробной информации.
.env.exampleФайл .env.example, написанный так, чтобы его было легче понять новым участникам команды:
# Node environment (development, production, etc.)
# @optional
NODE_ENV=development
# Public API URL is used to call our backend
PUBLIC_API_URL=http://localhost:3000
# Temporary token for the partner API sandbox — ask the integrations team for a new one
# @expire 2027-03-31
PARTNER_API_TOKEN=
→ Подробнее: Как написать хороший .env.example
Сканирование сравнивает ваш код с одним файлом — поэтому любой ключ, который вы добавили в .env и забыли в .env.example, остаётся незамеченным, пока новый участник не клонирует репозиторий. Предупреждения о расхождениях выявляют именно это:
▸ Drift between .env and .env.example
──────────────────────────────────────────────────────────────────────
STRIPE_SECRET not documented in .env.example
──────────────────────────────────────────────────────────────────────
Включено по умолчанию; отключите с помощью --no-drift-warnings.
→ См. Документацию по предупреждениям о расхождениях для более подробной информации.
Добавьте метаданные об истечении срока действия к вашим переменным окружения, чтобы получать предупреждения, когда они скоро истекут. Например, в вашем файле .env:
# @expire 2025-12-31
API_TOKEN=
→ См. Документацию по истечению срока действия для более подробной информации.
Вы можете игнорировать предупреждения о конкретных переменных окружения, добавляя комментарии в свой код. Например:
const apiKey = process.env.API_KEY; // dotenv-diff-ignore
Это полезно, когда вы знаете, что конкретное предупреждение безопасно в вашем исходном коде.
→ См. Документацию по комментариям игнорирования для более подробной информации.
--baseline)Внедряйте dotenv-diff в проекты, где уже есть известные предупреждения, записывая текущее состояние в файл базовой линии. Будущие запуски будут сообщать только о вновь выявленных проблемах:
dotenv-diff --baseline
→ См. Документацию по базовой линии для более подробной информации.
--explain)Проверьте конкретную переменную окружения, чтобы увидеть, где она определена, где используется в кодовой базе и её общий статус:
dotenv-diff --explain DATABASE_URL
→ См. Документацию по --explain для более подробной информации.
В монорепозиториях с несколькими приложениями и пакетами вы можете включить общие папки:
{
"scripts": {
"dotenv-diff": "dotenv-diff --example .env.example --include-files '../../packages/**/*' --ignore VITE_MODE"
}
}
→ См. Документацию по монорепозиториям для более подробной информации.
Это позволит:
0 → Ошибок нет1 → Найдены ошибки (или предупреждения в строгом режиме)→ См. Документацию dotenv-diff для полной документации
Приветствуются вопросы и pull request'ы.
→ См. CONTRIBUTING для подробностей.
Спасибо этим замечательным людям за вклад в этот проект:
Лицензировано под MIT.
Создано chrilleweb