Веб-интерфейс
devtoolz ui запускает небольшой веб-сервер на вашем компьютере и открывает страницу в браузере. На ней команды пакета выполняются через формы, таблицы, графы и предпросмотр вместо флагов: папки выбираются в файловом браузере, каждая находка видна рядом с кодом, на который указывает, а каждое изменение ваших файлов подтверждается отдельно. Ничего не покидает ваш компьютер.
devtoolz uidevtoolz 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. - Если страница больше не достаёт до сервера (его остановили), перезагрузите страницу по адресу, который напечатала команда.