Вопрос или проблема
Вот мой launch.json:
{
// Для получения дополнительной информации посетите: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Debug Current Test File",
"autoAttachChildProcesses": true,
"skipFiles": ["<node_internals>/**", "**/node_modules/**"],
"program": "${workspaceRoot}/node_modules/vitest/vitest.mjs",
"args": ["run", "${relativeFile}"],
"smartStep": true,
"console": "internalConsole"
}
]
}
Мне приходится каждый раз нажимать на тестовый файл, который я хочу запустить, перед тем как нажать f5 для отладки.
Я хочу запомнить последний открытый тестовый файл на вкладках, возможно определив его из заданного набора файлов или конкретной директории.
Не последний выполненный тестовый файл, а последний открытый тестовый файл в редакторе.
Ответ или решение
Чтобы решить проблему запуска последнего открытого тестового файла в Visual Studio Code с использованием TypeScript и Vitest, необходимо интегрировать функциональность, которая бы автоматизировала выбор файла, который был последним открыт пользователем. Это избавит вас от необходимости вручную переходить к этому файлу и предоставит более удобный способ запуска тестов.
Теоретическая база
Visual Studio Code позволяет настраивать пользовательские задачи и запускать их с использованием launch.json, что вы уже делаете. Однако для решения вашей задачи потребуется динамически получать информацию о последнем открытом файле и использовать её для запуска тестов. Этот процесс может быть автоматизирован, предлагая более интегрированное и плавное рабочее окружение.
Поскольку настольное средство не предоставляет встроенной поддержки для отслеживания последнего открытого файла, существует несколько подходов к решению этой задачи с использованием внешних модулей и расширений или скриптов на Node.js.
Пример
Наиболее прямой подход – использование расширений VSCode или скриптов, которые могут отслеживать открытые файлы и предоставлять API для их получения. В нашем случае, это может означать написание пользовательского скрипта или поиск существующего решения через встроенный маркетплейс расширений.
Шаги для реализации:
-
Создание скрипта для отслеживания открытых файлов:
Используйте API VSCode, который предоставляет возможность подписаться на события открытия редакторов и сохранить путь к файлу, когда он открывается. Скрипт может быть написан на JavaScript/TypeScript и запущен в фоновом режиме. -
Интеграция с launch.json:
Измените конфигурацию в launch.json так, чтобы скрипт использовался для определения последнего открытого файла. Это может быть как через запись пути к файлу в файл или переменную окружения, так и через прямое обращение к API. -
Использование шаблонов для динамического поиска файлов:
Модифицируйте параметр"args"
в launch.json, чтобы использовать динамически определяемые значения, например, полученные от вашего скрипта.
Вот пример того, как может выглядеть подобный настрой:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Debug Last Opened Test File",
"autoAttachChildProcesses": true,
"skipFiles": ["<node_internals>/**", "**/node_modules/**"],
"program": "${workspaceFolder}/node_modules/vitest/vitest.mjs",
"args": ["run", "${command:extension.getLastOpenedFile}"],
"smartStep": true,
"console": "internalConsole"
}
]
}
В данном случае предполагается, что extension.getLastOpenedFile
– это команда, возвращающая путь к последнему открытому файлу.
Применение
Сценарий реальной работы:
Если вы разработчик, который часто переключается между различными тестовыми файлами в крупном проекте, такая автоматизация значительно ускорит вашу работу. Например, после изучения кода и переключения на тестовый файл, вы можете быстро перейти к отладке без лишних движений.
Дополнительные советы:
-
Поиск существующих расширений: Проверьте в Marketplace, существует ли уже расширение, выполняющее такую функциональность. Это может сэкономить время на разработке собственного решения.
-
Отладка решения: При отладке следите за правильной работой скрипта и интеграцией с Vitest, убедитесь, что запускается именно тот файл, который требуется.
-
Настройка CLI-команд для Vitest: В Vitest можно использовать CLI для выполнения специфичных задач. Убедитесь, что ваши настройки учитывают это и работают с последними версиями инструмента.
Заключение
В описанной конфигурации большое значение уделяется автоматизации и повышению удобства разработки. Используя подходы, указанные выше, вы сможете настроить своё рабочее окружение так, чтобы оно работало плавно и эффективно, соответствуя вашим профессиональным потребностям и стилю работы.