Skip to content

CLI

bash
npx vue-feature-toggles <command> [options]

CLI читает конфигурацию прямо из ваших исходных файлов — отдельный файл конфигурации не нужен. Он сканирует вызов app.use(FeatureToggles, { ... }) и статически извлекает flags, meta, expiry, groups и dependencies.

ts
// 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, schedule, variables, userId — динамические/только runtime, CLI их не разбирает
})

Если нужно явное переопределение (например, в монорепозитории), создайте feature-toggles.config.js в корне проекта — он имеет приоритет над сканированием исходников:

js
// feature-toggles.config.js  (опциональное явное переопределение)
export default {
  flags: { newDashboard: true, betaSearch: false },
  meta: { newDashboard: { owner: 'alice', addedAt: '2024-01-15' } },
}

list — показать все флаги

bash
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]

Колонка Source всегда показывает static — CLI видит только статически просканированную конфигурацию, а не живое приложение, и не может знать, разрешился бы флаг на деле из rules/loader/URL-переопределения в рантайме. Воспринимайте это как «объявлен статически», а не как реальное разрешение источника в реальном времени.

check — найти неизвестные ссылки на флаги

bash
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(...), useFeatureVariant(...), v-feature="..." и isEnabled/getVariant/setFlag/resetFlag/watchFlag(...). Перечисляет каждую найденную ссылку — ✅ известная, ❌ неизвестная с подсказкой «может, вы имели в виду?». Завершается с кодом 1 при обнаружении неизвестных ссылок — безопасно для CI.

✅ newDashboard
✅ betaSearch
❌ newCheckout  — unknown flag. Did you mean: checkoutFlow?

Директорию для сканирования можно указать и как позиционный аргумент, и через --src.

stale — найти флаги, просроченные для удаления

bash
npx vue-feature-toggles stale
npx vue-feature-toggles stale --months 6

Показывает булевы флаги со значением true, чей meta.addedAt старше --months (по умолчанию: 3). Это кандидаты на удаление — фича живёт достаточно долго, чтобы флаг стал мёртвым кодом. Вариантные (строковые) флаги никогда не помечаются как устаревшие, независимо от возраста.

Глобальные опции

ОпцияПо умолчаниюОписание
<dir> (позиционный)(только check)Директория исходников для сканирования — альтернатива --src
--config <path>(сканировать исходники)Явное переопределение файла конфигурации
--root <path>.Корневая директория проекта
--src <path>src (только check)Директория исходников для сканирования
--months <n>3 (только stale)Порог возраста в месяцах