Добавить в корзинуПозвонить
Найти в Дзене

🔮 Dotenv — это прошлый век

Встречайте dotenvx Все знают .env файлы. Удобно для разработки. Но в продакшене начинается ад: · Где хранить секреты? В CI? В менеджере секретов? В голове? · Как синхронизировать .env между разработчиками? · Как понять, какие переменные вообще нужны? 🌌 dotenvx (от создателя оригинального dotenv) решает это. 🔄 Что нового: 1. Шифрование прямо в репозитории: # Вместо .env в git кладём .env.encrypted dotenvx encrypt # Расшифровывается ключом из переменной окружения dotenvx decrypt Секреты в git, но в зашифрованном виде. Ключ — только в продакшене. 2. Мульти-окружения: · .env.development · .env.staging · .env.production Все в одном месте, все под версиями. 3. Валидация схемы: import 'dotenv/config' import { z } from 'zod' const envSchema = z.object({ DATABASE_URL: z.string().url(), PORT: z.string().default('3000'), API_KEY: z.string().min(32) }) const env = envSchema.parse(process.env) Если в .env не хватает переменной — приложение не запустится, а не упадёт в рантайме. 4. Инте

🔮 Dotenv — это прошлый век. Встречайте dotenvx

Все знают .env файлы. Удобно для разработки. Но в продакшене начинается ад:

· Где хранить секреты? В CI? В менеджере секретов? В голове?

· Как синхронизировать .env между разработчиками?

· Как понять, какие переменные вообще нужны?

🌌 dotenvx (от создателя оригинального dotenv) решает это.

🔄 Что нового:

1. Шифрование прямо в репозитории:

# Вместо .env в git кладём .env.encrypted

dotenvx encrypt

# Расшифровывается ключом из переменной окружения

dotenvx decrypt

Секреты в git, но в зашифрованном виде. Ключ — только в продакшене.

2. Мульти-окружения:

· .env.development

· .env.staging

· .env.production

Все в одном месте, все под версиями.

3. Валидация схемы:

import 'dotenv/config'

import { z } from 'zod'

const envSchema = z.object({

DATABASE_URL: z.string().url(),

PORT: z.string().default('3000'),

API_KEY: z.string().min(32)

})

const env = envSchema.parse(process.env)

Если в .env не хватает переменной — приложение не запустится, а не упадёт в рантайме.

4. Интеграция с CI/CD:

# В GitHub Actions

dotenvx run -- node app.js

# Подтянет нужный .env.production и расшифрует ключом из GitHub Secrets

🪢 Пример workflow:

# Разработчик правит .env

echo "DATABASE_URL=postgres://..." >> .env

# Коммитит зашифрованную версию

dotenvx encrypt --env development

git add .env.encrypted .env.keys

git commit -m "add db url"

# На проде

export DOTENV_PRIVATE_KEY=... (из секретов)

dotenvx decrypt --env production

dotenvx run -- node server.js

⏱️ Что с безопасностью?

· Ключи хранятся отдельно (в менеджере секретов).

· Файлы в git зашифрованы.

· Можно ротировать ключи без изменения кода.

💎 Инсайт: dotenvx — это Git для секретов. Вся история изменений, все окружения, полная прозрачность. Без боли синхронизации между разработчиками и копипаста секретов в Slack.

➖➖➖

Как вы храните секреты сейчас? В голове? В LastPass? В AWS Secrets Manager?

#инструменты #конфиги #секреты #devops #dotenvx