Dev-сервери
SnakeFlow керує будь-якою кількістю dev-серверів — Next.js, Vite, FastAPI, Django, Rails, Go, Rust, PHP — будь-який runtime і команда.
Кожен сервер працює у іменованому терміналі VS Code; статус перевіряється за TCP-портом і наявністю терміналу. Індикатори — у сайдбарі та status bar у реальному часі.
Конфігурація серверів
Додайте в .vscode/settings.json:
"devManager.project.servers": [ { "id": "web", "label": "Frontend", "command": "npm run dev", "path": "", "port": 3000 }, { "id": "api", "label": "API Server", "command": "python manage.py runserver 8000", "path": "backend", "port": 8000 }, { "id": "studio", "label": "Prisma Studio", "command": "npx prisma studio", "path": "", "port": 5555, "startWithAll": false }]Поля сервера
| Поле | Обов’язкове | Опис |
|---|---|---|
id | ✅ | Унікальний ідентифікатор — префікс імені терміналу |
label | ✅ | Назва в меню серверів і status bar |
command | ✅ | Shell-команда запуску |
path | — | Відносна робоча директорія від кореня ("" = корінь) |
port | — | TCP-порт для статусу (0 = без моніторингу порту) |
startWithAll | — | Включати в Start all (Ctrl+Alt+S). За замовчуванням true. false — лише з меню (Prisma Studio, Storybook тощо). |
Команди
| Дія | Клавіші | Як відкрити |
|---|---|---|
| Запустити всі (bulk) | Ctrl+Alt+S | Tools (Ctrl+Alt+M) → Start all — лише записи з startWithAll не false |
| Зупинити всі | Ctrl+Alt+Q | Tools або меню серверів → Stop all — усі налаштовані сервери |
| Перезапустити всі | Ctrl+Alt+R | Меню серверів → Restart all — stop all, потім bulk start |
| Один сервер Start / Stop / Restart | — | Клік по індикатору серверів у status bar → сервер → дія |
| Manage Servers | — | Палітра → SnakeFlow: Manage Servers, або меню серверів |
Приклади
Один застосунок (Node.js)
[{ "id": "web", "label": "Dev Server", "command": "npm run dev", "path": "", "port": 3000 }]Монорепо (Turborepo / pnpm)
[ { "id": "web", "label": "Frontend", "command": "pnpm run dev", "path": "apps/web", "port": 5173 }, { "id": "api", "label": "API", "command": "pnpm run dev", "path": "apps/api", "port": 8787 }, { "id": "inngest", "label": "Inngest", "command": "pnpm dlx inngest-cli@latest dev", "path": "apps/web", "port": 8288 }]Python + React
[ { "id": "frontend", "label": "React", "command": "npm run dev", "path": "frontend", "port": 3000 }, { "id": "backend", "label": "Django", "command": "python manage.py runserver 8000", "path": "backend", "port": 8000 }, { "id": "celery", "label": "Celery Worker", "command": "celery -A config worker -l info", "path": "backend", "port": 0 }]Go-мікросервіси
[ { "id": "gateway", "label": "API Gateway", "command": "go run ./cmd/gateway", "path": "services/gateway", "port": 8080 }, { "id": "auth", "label": "Auth", "command": "go run ./cmd/auth", "path": "services/auth", "port": 8081 }]Опційні утиліти (лише з меню)
Окремий запис у servers на кожну команду — нічого не захардкожено в розширенні:
{ "id": "studio", "label": "Prisma Studio", "command": "npx prisma studio", "path": "", "port": 5555, "startWithAll": false}Ctrl+Alt+Sпропускає записи зstartWithAll: false- Status bar → меню серверів → Prisma Studio → Start
- Stop all зупиняє Studio, якщо вона була запущена (той самий цикл: Ctrl+C → kill порту → dispose терміналу)
У Manage Servers крок 5 питає, чи включати сервер у bulk start.
Моніторинг статусу
Статус показується:
- Status bar — спільний індикатор; клік відкриває меню по серверах
- Меню серверів — рядок статусу на кожен запис (
Running,Stopped, порт/PID за наявності)
Використовується комбінована перевірка: порт відкритий і термінал ще живий. Це зменшує хибні спрацьовування, коли порт зайнятий іншим процесом.
| Статус | Значення |
|---|---|
| 🟢 Running | Порт відкритий, термінал активний |
| 🔴 Stopped | Порт закритий або термінал закрито |
| ⚪ No port | port: 0 — лише наявність терміналу |