Init
lintsync init [tool] --preset=<name> — устанавливает зависимости, генерирует конфиг(и) из пресета, сохраняет запись в манифесте и подключает npm-скрипты lint/lint:fix/format.
lintsync init [tool] [options]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 предлагает три варианта:
- Использовать встроенный или сохранённый пресет — выбор из
vue-app/react-app/npm-lib/baseплюс всё, что сохранено локально. - Выбрать инструменты по отдельности (общие дефолты) — чекбоксы для ESLint/Prettier/Stylelint, значения берутся из пресета
baseкак есть. - Собрать и сохранить новый пресет — см. Сборка собственного пресета ниже.
Если конфиг для инициализируемого инструмента уже существует, интерактивный диалог спрашивает про перезапись (да/нет), а не молча пропускает — --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 без дополнительного вывода.