Лев Верещагин


mise-en-place: среда разработки в мире cargo

Пару дней назад я открыл для себя mise (произносится как «meez»). Это универсальный менеджер версий инструментов, похожий на asdf или pyenv, а также менеджер окружения, как direnv, который отличается высокой скоростью работы, надёжностью, декларативной конфигурацией и таким же удобством использования, как у cargo.

Я отказался от hatch, который ранее использовал исключительно для загрузки Python из python-build-standalone с помощью команды hatch python install all --update. Я также перестал использовать Node из Homebrew и удалил собственные скрипты из dotfiles, которые синхронизировали установки pipx между рабочим и личным ноутбуками.

Мой ~/.config/mise/config.toml теперь выглядит так:

[tools]
python = ["3.12", "3.11", "3.10", "3.9", "3.8"]
node = "lts"
usage = "latest"  # требуется самим mise
"pipx:maturin" = "latest"
"pipx:poetry" = "latest"
"pipx:pypi-command-line" = "latest"
"pipx:watchfiles" = "latest"

[settings]
experimental = true  # бэкенд pipx находится в экспериментальном режиме

Кроме того, я начал использовать функцию управления окружением от mise. Файл .mise.local.toml с переменными окружения, специфичными для компании, я разместил в директории с рабочими репозиториями:

[env]
PIP_INDEX_URL = "..."
CERT_PATH = "..."
GITLAB_TOKEN = "..."
...

Пока что всё работает отлично.