Как мне прикрепить задачи при сохранении или сборке VS Code?

Я хотел бы, чтобы все запускалось при запуске сборки (Command + Shift + B) или при сохранении (Command + S) в VS Code.

Я хочу, чтобы запустился TypeScript, и я хочу, чтобы запустился Bun, и я хочу, чтобы после этого запустился Node.js, а затем я хочу запустить окно браузера.

В VS Code я нашел панель запуска и отладки, и в ней перечислено множество опций. Я не понимаю, где находится опция запуска списка вещей или команд. В моем проекте у меня есть tsconfig.json, package.json, tasks.json, package-lock.json, bun.build.js и launch.json, и некоторые из них имеют значения script с командами в них. Что мне сделать, чтобы упростить это?

Вот мои задачи.json:

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "typescript",
            "tsconfig": "tsconfig.json",
            "option": "watch",
            "problemMatcher": [
                "$tsc-watch"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "label": "tsc: watch - tsconfig.json"
        },
    ]
}

В последней версии vscode есть опция Действия кода при сохранении. Это звучит как то, что я хочу, но в списке есть только несколько вариантов.

вам действительно нужно было опубликовать и это, и stackoverflow.com/q/78703696/11107541 ?

starball 04.07.2024 09:07

@starball, это немного разные вопросы. один предназначен для булочек, а этот является общим.

1.21 gigawatts 05.07.2024 14:53
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
2
77
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы прикрепить объекты для сохранения или создания действий, вы можете попробовать следующее:

  1. Создать/обновить «tasks.json»
// Inside .vscode/tasks.json, update or add the following
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "compile TypeScript",
            "type": "shell",
            "command": "tsc",
            "problemMatcher": ["$tsc"],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        },
        {
            "label": "run Bun",
            "type": "shell",
            "command": "bun build.js",
            "dependsOn": "compile TypeScript"
        },
        {
            "label": "run Node.js",
            "type": "shell",
            "command": "node your_script.js",
            "dependsOn": "run Bun"
        }
    ]
}
  1. Создать/обновить «launch.json»
// Inside .vscode/launch.json , add or update the following
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch Browser",
            "type": "pwa-chrome",
            "request": "launch",
            "url": "http://localhost:3000",
            "webRoot": "${workspaceFolder}",
            "preLaunchTask": "run Node.js"
        }
    ]
}
  1. Настройте автоматическое сохранение в файле settings.json.
// Inside settings.json, you can add or update the following code
{
    "files.autoSave": "onFocusChange",
    "editor.formatOnSave": true
}

После всего этого после сохранения или сборки откроется окно браузера.

У меня такое ощущение, что ваш isDefault выполняет не ту задачу.

starball 04.07.2024 09:06

@starball Я разместил свой tasks.json из другого проекта. Там же есть isDefault. Есть ли где-то еще, что оно должно быть расположено?

1.21 gigawatts 05.07.2024 15:05

@starball, что интересно, флаг isDefault, установленный в значение true, в моем случае был проблематичным. Когда я попытался построить, vscode открыл диалоговое окно с вопросом, какой из них. По какой-то причине он также запустил Java. Я установил для одной задачи значение false, и, похоже, проблема решена, stackoverflow.com/questions/78711660/…

1.21 gigawatts 05.07.2024 15:35

@starball Думаю, ты прав. Необходимо ли устанавливать значение по умолчанию для последней запускаемой задачи, чтобы любая задача, от которой она зависит, запускалась первой? Перемещение раздела группы в Bun приводит к тому, что TSC запускается первым, а Bun — вторым. На данный момент я удалил node.js и установил предварительный запуск в launch.json на run Bun. Браузер не запускается, но остальные части работают.

1.21 gigawatts 05.07.2024 15:40

Мне пришлось указать путь к браузеру в файле launch.json. Браузер теперь запускается, когда я нажимаю кнопку «Начать отладку» на панели «Отладка». Он также выполняет задачи. Если я использую сочетание клавиш Ctrl + Shift + B, задачи запускаются, и vscode помещает сообщение в нижний колонтитул, Launch Browser (myproject) - Select and start debug configuration. Если я затем нажму на палитре команд, отобразятся все конфигурации запуска. Если я нажму на один из них, он создаст новый экземпляр браузера.

1.21 gigawatts 05.07.2024 16:15

Краткое описание: есть ли способ запустить это save? Он работает при сборке, но не при сохранении. Если я использую CMD + SHIFT + B, он будет работать при сборке.

1.21 gigawatts 19.07.2024 19:29

Другие вопросы по теме