CLI, адаптеры и плагин Vite
CLI
npx vue-feature-toggles <command> [options]CLI читает конфигурацию прямо из ваших исходных файлов — отдельный файл конфигурации не нужен. Он сканирует вызов app.use(FeatureToggles, { ... }) и статически извлекает flags, meta, expiry, groups и dependencies.
// main.ts — CLI читает этот файл автоматически
app.use(FeatureToggles, {
flags: { newDashboard: true, betaSearch: false, checkoutFlow: 'v1' },
meta: { newDashboard: { owner: 'alice', addedAt: '2024-01-15', ticket: 'PROJ-42' } },
expiry: { betaBanner: '2025-06-01' },
groups: { beta: ['betaSearch'] },
// rules, loader — динамические, CLI их не разбирает
})Если нужно явное переопределение (например, в монорепозитории), создайте feature-toggles.config.js в корне проекта — он имеет приоритет над сканированием исходников:
// feature-toggles.config.js (опциональное явное переопределение)
export default {
flags: { newDashboard: true, betaSearch: false },
meta: { newDashboard: { owner: 'alice', addedAt: '2024-01-15' } },
}list — показать все флаги
npx vue-feature-toggles listВыводит выровненную таблицу с именем флага, значением, источником, владельцем, датой добавления, бейджем истечения срока и принадлежностью к группам.
Flag Value Source Owner Added Expiry Groups
──────────────────────────────────────────────────────────────────────────
newDashboard true static frontend 2025-01-15 layout
betaSearch false static search-… 2025-06-01 beta
checkoutFlow v1 static checkout 2025-09-01
christmasBanner true static marketing 2024-11-01 [EXPIRED]check — найти неизвестные ссылки на флаги
npx vue-feature-toggles check
npx vue-feature-toggles check ./src/features
npx vue-feature-toggles check --src src/featuresСканирует файлы .ts, .tsx, .js, .jsx, .vue на вызовы useFeature(...), v-feature="...", isEnabled(...). Перечисляет каждую найденную ссылку — ✅ известная, ❌ неизвестная с подсказкой «может, вы имели в виду?». Завершается с кодом 1 при обнаружении неизвестных ссылок — безопасно для CI.
✅ newDashboard
✅ betaSearch
❌ newCheckout — unknown flag. Did you mean: checkoutFlow?stale — найти флаги, просроченные для удаления
npx vue-feature-toggles stale
npx vue-feature-toggles stale --months 6Показывает булевы флаги со значением true, чей meta.addedAt старше --months (по умолчанию: 3). Это кандидаты на удаление — фича живёт достаточно долго, чтобы флаг стал мёртвым кодом.
Глобальные опции
| Опция | По умолчанию | Описание |
|---|---|---|
--config <path> | (сканировать исходники) | Явное переопределение файла конфигурации |
--root <path> | . | Корневая директория проекта |
--src <path> | src (только check) | Директория исходников для сканирования |
--months <n> | 3 (только stale) | Порог возраста в месяцах |
Адаптеры-загрузчики
Готовые загрузчики для популярных сервисов управления флагами, импортируются из vue-feature-toggles/adapters.
import { launchDarklyLoader, unleashLoader, flagsmithLoader } from 'vue-feature-toggles/adapters'LaunchDarkly
app.use(FeatureToggles, {
loader: launchDarklyLoader({
clientSideId: 'your-client-side-id',
user: { key: userId },
}),
})Unleash
app.use(FeatureToggles, {
loader: unleashLoader({
url: 'https://unleash.example.com/api',
appName: 'my-app',
clientKey: 'default:development.abc123',
userId, // опционально — добавляет заголовок UNLEASH-INSTANCEID
}),
})Flagsmith
app.use(FeatureToggles, {
loader: flagsmithLoader({
apiKey: 'ser.your-api-key',
identity: userId, // опционально — включает оценку по пользователю
}),
})Плагин Vite
Автоматически удаляет <FeatureDevTools> и его импорт из всех исходных файлов при продакшен-сборке — обёртка v-if="isDev" не нужна.
// vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { featureTogglesPlugin } from 'vue-feature-toggles/vite'
export default defineConfig({
plugins: [vue(), featureTogglesPlugin()],
})| Опция | По умолчанию | Описание |
|---|---|---|
stripDevTools | true | Удалять <FeatureDevTools> из шаблонов в продакшене |