mono-client-vite-plugin
v0.1.1
Published
Vite plugin for mono-client with health checker, properties API, and dev API call functionality
Maintainers
Readme
mono-client-vite-plugin
Комплексна збірка Vite плагінів для mono-client проектів, що включає health-check, API конфігурацій та розроблювальне API проксіювання.
Встановлення
npm install mono-client-vite-pluginБазове використання
import { createViteConfig } from "mono-client-vite-plugin";
import { defineConfig } from "vite";
export default defineConfig(
createViteConfig({
// Ваша користувацька конфігурація Vite (опціонально)
}),
);Функціональність
1. Health Checker Plugin 🏥
Автоматично налаштовує health-check endpoints для моніторингу стану сервісу:
GET /health- базова перевірка статусуGET /health/readiness- готовність сервісу до прийому трафікуGET /health/liveness- живість процесу
Відповідь:
{
"status": "UP",
"groups": ["exploratory", "liveness", "readiness"]
}Працює як на dev сервері, так і на preview сервері.
2. Properties API Plugin ⚙️
Надає доступ до конфігурації приложення через REST API:
- Endpoint:
GET /api/config - Повертає: JSON з усіма конфігураційними параметрами
Читає конфігурацію з файлу через змінну середовища PROPERTIES_PATH або використовує значення за замовчуванням.
Приклад:
// У фронтенд коді
const config = await fetch("/api/config").then((r) => r.json());
console.log(config.api_domain);
console.log(config.PORT);3. Dev API Call Plugin 🔌
Проксіює API запити до backend сервісу з автоматичною обробкою headers та cookies:
- Endpoint:
/api-call/* - Функціональність:
- Переспрямовує запити на backend (
api_cc_web_api_base_url) - Автоматично встановлює корректні headers (
Accept: application/json) - Обробляє cookies та замінює domain
- Підтримує всі HTTP методи (GET, POST, PUT, PATCH, DELETE)
- Переспрямовує запити на backend (
Приклад використання:
// Запит на /api-call/users/123
// Буде переспрямований на: https://api.example.com/api/users/123
const response = await fetch("/api-call/users/123", {
method: "GET",
headers: {
"Content-Type": "application/json",
},
});Конфігурація
createViteConfig(customConfig)
Функція приймає частину конфігурації Vite та об'єднує її з дефолтними налаштуваннями:
createViteConfig({
define: {
__CUSTOM_VAR__: JSON.stringify("value"),
},
server: {
middlewareMode: true, // Перевизначити при потребі
},
});Дефолтні налаштування
| Параметр | Значення | Джерело |
| ----------------- | ----------------- | ---------------------------------- |
| Port | 8080 | process.env.PORT або 8080 |
| Host | 0.0.0.0 | Жорстко визначено |
| Allowed Hosts | localhost + з env | ALLOWED_HOSTS (розділено комами) |
| Build Output | src/app/dist | Жорстко визначено |
Змінні середовища
PORT=3000 # Порт сервера (за замовчуванням 8080)
ALLOWED_HOSTS=localhost,app.dev,app.local # Дозволені хости (розділені комами)
PROPERTIES_PATH=/path/to/config.json # Шлях до файлу конфігураціїBuild Утиліти
createBundle(rootDir, bundleDir, toCopy, pruneDevDeps)
Створює бандл проєкту:
import { createBundle } from "mono-client-vite-plugin";
await createBundle(
"./src", // Кореневий каталог
"./dist", // Каталог бандлу
[
// Файли/папки для копіювання
"node_modules",
"public",
"package.json",
],
true, // Видалити dev залежності
);createTestBundle, createReleaseBundle
Спеціалізовані функції для створення тест та release бандлів:
import { createTestBundle, createReleaseBundle } from "mono-client-vite-plugin";
await createTestBundle(rootDir, bundleDir);
await createReleaseBundle(rootDir, bundleDir);startViteServer
Запускає Vite preview сервер з підтримкою користувацьких параметрів:
node -e "import { startViteServer } from 'mono-client-vite-plugin'; startViteServer();" \
--properties /path/to/config.json \
--port 3000Приклад повної конфігурації
vite.config.ts:
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import react from "@vitejs/plugin-react";
import { createViteConfig } from "mono-client-vite-plugin";
export default defineConfig(
createViteConfig({
plugins: [vue(), react({})],
define: {
__APP_VERSION__: JSON.stringify(process.env.npm_package_version),
},
}),
);package.json scripts:
{
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "node -e \"import { startViteServer } from 'mono-client-vite-plugin'; startViteServer();\" -- --properties ./config.json",
"bundle": "node scripts/bundle.js"
}
}Ліцензія
MIT
