1 сентября 2026 г.
2 мин
5

direnv — инструмент который я не замечал пока не попробовал

Есть такие инструменты которые существуют годами, все о них знают, но ты как-то проходишь мимо. Потом пробуешь - и думаешь «почему я не использовал это раньше».

С direnv у меня именно так.

Что это такое

direnv - утилита для командной строки которая автоматически загружает переменные окружения когда ты заходишь в папку проекта и выгружает их когда уходишь.

Звучит просто. Но вот в чём дело - если у тебя несколько проектов каждый со своими API ключами, настройками базы данных, путями к бинарям - без direnv это выглядит так: открыл терминал, вспомнил что не экспортировал нужные переменные, экспортировал вручную, забыл убрать когда перешёл к другому проекту, получил непонятную ошибку, полчаса дебага.

С direnv: зашёл в папку - всё загрузилось само. Вышел - убралось само.

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

В каждом проекте создаёшь файл .envrc:

export DATABASE_URL="postgresql://localhost:5432/mydb"
export API_KEY="dev-key-123"
export NODE_ENV="development"

Первый раз нужно явно разрешить файл - direnv allow. После этого всё работает автоматически. Безопасность встроена: direnv не выполняет новый или изменённый файл без явного подтверждения.

Почему это важно именно сейчас

В 2026 году типичный разработчик работает с несколькими проектами одновременно. Node.js разных версий, разные базы данных, разные API ключи, разные конфиги. «Работает на моей машине» баг в большинстве случаев - это не баг. Это состояние шелла которое отличается от коллеги.

direnv в связке с mise (для версий инструментов) решает это: репозиторий сам определяет что нужно для работы. Новый разработчик клонирует репо - и получает то же самое окружение что и все остальные.

Что делать с секретами

Коммитить .envrc с реальными ключами нельзя. Стандартный паттерн:

# Коммитишь в репо — шаблон без секретов
.envrc.example

# Не коммитишь — реальные значения
.envrc.local

В .envrc загружаешь локальный файл:

# .envrc
source_env_if_present .envrc.local
export NODE_ENV="development"

Каждый разработчик копирует .envrc.example в .envrc.local и заполняет своими значениями. Стандартно, воспроизводимо, без утечки секретов в git.

Мой вывод

Я давно использую несколько проектов одновременно. У каждого свои переменные окружения. До direnv переключение между ними было ручным и ненадёжным.

Иногда лучшие инструменты не те что делают что-то новое. А те что убирают раздражение которое ты уже перестал замечать. 🔧

Читайте дальше
Подобрано по темам
Все заметки →

Комментарии

Загружаю...
Оставить комментарий