Назад к обновлениям
New releaseSep 2, 2026

dotenv-diff [email protected]

Проверка использования переменных окружения в кодовой базе

Поделиться

dotenv-diff

Сканируйте свою кодовую базу, чтобы обнаружить все ссылки на переменные окружения. Это помогает выявить отсутствующие, неиспользуемые, дублирующиеся и неправильно используемые переменные на раннем этапе, до того как они вызовут ошибки во время выполнения.

Полноценная поддержка SvelteKit, Next.js и Nuxt. Также отлично работает в современных проектах на JavaScript/TypeScript и фреймворках, таких как Node.js и Vue — или в любой другой настройке, где вам нужно надёжное сравнение файлов .env.

Coverage Status OpenSSF Scorecard OpenSSF Best Practices npm version npm downloads

✨ Отмечен в awesome-cli-apps — Курируемый список отличных CLI-приложений


Demo


Зачем нужен dotenv-diff?

  • Убедитесь, что все необходимые переменные окружения определены
  • Выявляйте отсутствующие или неправильно настроенные переменные
  • Улучшайте совместную работу, поддерживая команды в курсе требуемых переменных
  • Снижайте риск коммита чувствительных данных
  • Легко масштабируйте для монорепозиториев и мультисредовых настроек

Как это работает

→ См. Документацию по возможностям для подробностей о том, что проверяет сканер и как он работает.


Конфигурация (--init)

Сгенерируйте файл конфигурации по умолчанию:

dotenv-diff --init

→ См. Документацию по конфигурации для более подробной информации.


Git-хуки и интеграция с CI/CD

Легко интегрируйте 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


Предупреждения о расхождениях (Drift Warnings)

Сканирование сравнивает ваш код с одним файлом — поэтому любой ключ, который вы добавили в .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

Категории