Skip to content

Init ​

lintsync init [tool] --preset=<name> — устанавливает зависимости, генерирует конфиг(и) из пресета, сохраняет запись в манифесте и подключает npm-скрипты lint/lint:fix/format.

bash
lintsync init [tool] [options]
bash
lintsync init --preset=vue-app          # eslint + prettier + stylelint, одной командой
lintsync init eslint --preset=npm-lib   # только eslint, например если prettier уже настроен
lintsync init --preset=vue-app --force  # перезаписать существующий конфиг вместо пропуска
lintsync init                           # без --preset в реальном терминале: интерактивный диалог
  • Без [tool] инициализируется каждый инструмент, который определяет пресет, за один запуск. npm-lib никогда не предлагает Stylelint — этот пресет его вообще не определяет.
  • Если конфиг инструмента уже существует (под любым из его стандартных имён), этот инструмент пропускается с предупреждением, а не обрывает всю команду. --force перезаписывает вместо пропуска.
  • Зависимости устанавливаются тем пакетным менеджером, что уже использует проект (определяется по lock-файлу), как обычные devDependencies — LintSync никогда не редактирует списки зависимостей в package.json вручную.
  • --preset <name> резолвится и против 4 встроенных пресетов, и против любых сохранённых локально — см. Пресеты — поведение одинаковое в обоих случаях.

Опции ​

--preset <name> ​

Какой пресет применить. Не указывайте в реальном терминале, чтобы вместо этого получить интерактивный диалог — см. Интерактивный диалог ниже. В CI (без TTY) или с --json пропуск этого флага — ошибка.

--force ​

Перезаписать существующий конфиг инструмента вместо пропуска с предупреждением.

--cwd <path> ​

Директория проекта. По умолчанию — текущая директория.

--json ​

Машиночитаемый вывод.

--quiet ​

Подавить вывод при успехе.

--verbose ​

Сегодня не даёт дополнительного эффекта сверх обычного вида — оставлен для единообразия с sync/status.

Интерактивный диалог ​

При запуске без --preset в реальном терминале init предлагает три варианта:

  1. Использовать встроенный или сохранённый пресет — выбор из vue-app/react-app/npm-lib/base плюс всё, что сохранено локально.
  2. Выбрать инструменты по отдельности (общие дефолты) — чекбоксы для ESLint/Prettier/Stylelint, значения берутся из пресета base как есть.
  3. Собрать и сохранить новый пресет — см. Сборка собственного пресета ниже.

Если конфиг для инициализируемого инструмента уже существует, интерактивный диалог спрашивает про перезапись (да/нет), а не молча пропускает — --force по-прежнему пропускает этот вопрос и перезаписывает напрямую.

Сборка собственного пресета ​

Третий вариант — интерактивный конструктор:

  • ESLint, если включён, переиспользует блок пресета base как есть — отдельного редактора по правилам для него нет.
  • Prettier — выбираете, какие из собственных опций Prettier задать, из его живого списка опций (взятого из getSupportInfo() самого Prettier, поэтому всегда совпадает с той версией Prettier, что использует LintSync). Каждая опция получает подходящий тип вопроса: чекбокс для булевой, список реальных допустимых значений для опции-выбора, свободный текст для числа или строки.
  • Stylelint — выбираете, сколько базовых конфигов подключить (например, SCSS и Vue одновременно: stylelint-config-standard-scss, stylelint-config-standard-less, stylelint-config-recommended-vue, наряду с обычным stylelint-config-standard), затем задаёте значения для любого из примерно 80 правил, взятых из официальных конфигов Stylelint -recommended/-standard — булевы как чекбоксы, правила-выборы — из их реальных, сверенных с источником списков значений, паттерны/числа — свободным текстом. У Stylelint нет живого API со схемой, как у Prettier, поэтому этот список собран вручную из двух официальных пакетов конфигов, а не угадан. Включение scss/at-rule-no-unknown автоматически добавляет stylelint-scss в зависимости пресета. Ответ «выключено» на булевом правиле записывает явный null — способ Stylelint отключить правило, уже включённое базовым конфигом — а не просто убирает ключ.

Дальше вас попросят назвать пресет. Имя отклоняется, если оно пустое или совпадает с именем встроенного пресета либо уже сохранённого. После этого пресет сохраняется в локальное хранилище пресетов и с этого момента появляется в списке пресетов в любом проекте на машине — см. Пресеты.

Отмена (Ctrl+C/Esc) на любом шаге интерактивного диалога завершает выполнение с кодом 1 без дополнительного вывода.