Skip to content

Веб-интерфейс ​

devtoolz ui запускает небольшой веб-сервер на вашем компьютере и открывает страницу в браузере. На ней команды пакета выполняются через формы, таблицы, графы и предпросмотр вместо флагов: папки выбираются в файловом браузере, каждая находка видна рядом с кодом, на который указывает, а каждое изменение ваших файлов подтверждается отдельно. Ничего не покидает ваш компьютер.

bash
devtoolz ui
text
devtoolz ui is running at http://127.0.0.1:52144/?token=5f3c…
Press Ctrl+C to stop.

Браузер сам открывается по этому адресу. Слева в меню перечислены модули; интерфейс рассчитан на то, что их со временем станет больше.

Запуск ​

Команду можно запускать где угодно. Папка, из которой она запущена, — это стартовая папка файлового браузера и проект по умолчанию: место, где работают проверки и где хранятся конфигурации и пресеты на уровне проекта. --cwd <path> запускает интерфейс из другой папки, а проект можно сменить на самой странице.

По умолчанию сервер выбирает свободный порт (--port <n> задаёт свой) и слушает 127.0.0.1, поэтому достучаться до него может только этот компьютер. --no-open только печатает адрес. Ctrl+C останавливает сервер.

Интерфейс входит в сам пакет, ничего ставить отдельно не нужно. Модули для изображений переехали в MediaToolz вместе со своими командами.

Безопасность ​

  • Только этот компьютер. Сервер слушает 127.0.0.1. В адрес, который печатается при запуске, вшит одноразовый токен: открытие адреса ставит cookie, и каждый следующий запрос обязан её нести. Запрос с чужим заголовком Host или Origin отклоняется.
  • Чтение только внутри проекта. Просмотр кода показывает лишь файлы выбранного проекта размером до 1 МБ.
  • Запись всегда явная. Проверки только читают. Очистка кода меняет только те файлы, которые вы отметили, после подтверждения, и хранит бэкап, который можно откатить.

Проверки кода ​

Все проверки пакета в одном месте. Выберите проект, выберите проверку и нажмите Run check.

  • Overview запускает все проверки сразу и показывает карточку для каждой: чисто или сколько находок, с разбивкой на ошибки, предупреждения и заметки. Клик по карточке открывает подробности. Медленная проверка, Stale @ts-ignore, пропускается, пока вы не отметите флажок, потому что она проверяет типы во всём проекте.
  • Code — Dead exports, Empty catch blocks, Orphan tests, Import case, Circular imports, TODO comments, Stale @ts-ignore.
  • Dependencies — Unused dependencies, package.json exports.
  • Documentation — README code samples, npm scripts in the docs.

У каждой проверки свои параметры (например, «включая публичные точки входа» для Dead exports, список меток для TODO comments, файлы для проверок README), и у каждой можно указать шаблоны, которые нужно пропускать.

Результат — список находок, сгруппированных по файлам. Его можно отфильтровать по тексту или по виду находки, свернуть файл, а клик по находке открывает код: файл показан с подсветкой синтаксиса, прокручен к нужной строке, которая выделена, и с подсказкой, что делать. Стрелки на клавиатуре переходят к предыдущей и следующей находке. Copy path копирует абсолютный путь, а Open in VS Code открывает эту строку в редакторе.

Циклические импорты в виде графа ​

Для циклов импорта результат можно показать как Graph. Файлы — узлы, импорты — стрелки. Файл, который входит в несколько циклов, красный, входящий в один цикл — жёлтый, а импорт, состоящий только из типов, нарисован пунктиром. Список справа нумерует циклы: выберите цикл, чтобы подсветить его и приглушить остальные. Колесо мыши масштабирует, перетаскивание двигает, клик по файлу открывает его. List показывает те же циклы как находки.

Очистка кода ​

Удаляет комментарии (strip-comments) или вызовы console (console-strip) с предварительным просмотром. Scan the project перечисляет файлы, которые изменятся, и сколько комментариев или вызовов потеряет каждый. Пока ничего не меняется.

Откройте файл, чтобы увидеть настоящий diff с подсветкой синтаксиса, отметьте принимаемые файлы и нажмите Change N files. Страница спросит ещё раз и назовёт число удаляемых элементов. По умолчанию файлы не отмечены.

  • Файл, изменившийся после сканирования, пропускается с просьбой отсканировать заново, поэтому устаревший просмотр никогда не затрёт более свежую работу.
  • Меняются только исходные файлы внутри проекта.
  • Перед первой записью оригиналы копируются в ~/.devtoolz/cleanup-backups/, вне проекта. Undo this cleanup возвращает их, а Recent cleanups хранит прошлые очистки. Файл, который вы правили после очистки, откат не трогает.
  • Вызов console, который нельзя убрать безопасно (часть большего выражения или единственная инструкция if без фигурных скобок), перечисляется отдельно с указанием места, его никогда не угадывают.

Параметры ​

--port <n> ​

Порт, на котором слушать. По умолчанию 0 — выбрать свободный.

--host <address> ​

Адрес, на котором слушать. По умолчанию 127.0.0.1 оставляет интерфейс на этом компьютере. Любой другой делает его доступным из сети по обычному HTTP, под защитой одного лишь токена: не меняйте его, если не знаете, зачем это нужно.

--no-open ​

Напечатать адрес и не открывать браузер.

--token <value> ​

Использовать этот токен доступа вместо случайного. Для разработки.

--cwd <path> ​

Папка, из которой стартует интерфейс. По умолчанию — текущая.

--plain ​

Отключить цвет и баннер, даже в настоящем терминале.

--color ​

Принудительно включить цветной вывод, даже если он перенаправлен.

Проблемы и коды выхода ​

  • Порт занят: error: port 4000 is already in use — pick another with --port, or leave it out, код выхода 1.
  • Порт не целое число от 0 до 65535: код выхода 2.
  • Остановка по Ctrl+C — нормальный выход, код 0.
  • Если страница больше не достаёт до сервера (его остановили), перезагрузите страницу по адресу, который напечатала команда.