VS Код и задачи с node

До сих пор я использовал gulp для создания typescript и sass файлов, но теперь из-за нескольких новых шагов сборки я хотел бы объединить все и использовать node как одну точку входа (также node для запуска задач gulp через npm run taskName).

tasks.json довольно просто, задача build должна запускаться npm run watch:

{
    "version": "0.1.0",
    "command": "npm",
    "isShellCommand": true,
    "tasks": [
        {
            "taskName": "build",
            "isBuildCommand": true,
            "showOutput": "always",
            "isWatching": true,
            "args": [
                "run", "watch"
            ]
        }
    ]
}

package.json

"scripts": {
    "watch": "gulp default",
}

И вывод:

gulp default build
[14:20:54] Using gulpfile PATH_TO/gulpfile.js
[14:20:54] Task 'build' is not in your gulpfile
[14:20:54] Please check the documentation for proper gulpfile formatting
npm ERR! Windows_NT 6.3.9600
npm ERR! argv "C:\\Program Files (x86)\\nodejs\\\\node.exe" "C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "watch" "build"
npm ERR! node v0.12.2
npm ERR! npm  v2.7.4
npm ERR! code ELIFECYCLE
npm ERR! [email protected] watch: `gulp default build`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] watch script 'gulp default build'.
npm ERR! This is most likely a problem with the 2 package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     gulp default build
npm ERR! You can get their info via:
npm ERR!     npm owner ls 2
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:

Основываясь на выходе, gulp по-прежнему используется даже в том случае, если его нет в tasks.json (gulpfile.json существует в корневом каталоге и при поиске решения я обнаружил, что VS Code автоматически обнаруживает его, который, я полагаю, может быть проблемой?). Кроме того, свойство taskName выглядит как автоматически добавленное к командной строке в качестве аргумента, который неверен.

Небольшой, но рабочий пример (но он все еще работает gulp, поэтому typescript скомпилируется дважды при каждом сохранении):

{
    "version": "0.1.0",
    "command": "npm",
    "isShellCommand": true,
    "args": [
        "run", "watch"
    ],
    "showOutput": "always"
}

Как я могу выполнять несколько задач с помощью VS Code через npm?

Ответ 1

Как уже упоминалось в моих комментариях, если вы хотите запускать задачи сценариев npm из VS Code, найдите эту статью, которая в основном инструктирует создайте .vscode\tasks.json следующим образом:

{
    "version": "0.1.0",
    "command": "npm",
    "isShellCommand": true,
    "suppressTaskName": true,
    "tasks": [
        {
        // Build task, Ctrl+Shift+B
        // "npm install --loglevel info"
        "taskName": "install",
        "isBuildCommand": true,
        "args": ["install", "--loglevel", "info"]
        },
        {
        // Test task, Ctrl+Shift+T
        // "npm test"
        "taskName": "test",
        "isTestCommand": true,
        "args": ["test"]
        },
        {
        // "npm run lint"
        "taskName": "lint",
        "args": ["run", "lint"]
        }
    ]
}

В качестве альтернативы также существует пример расширения кода VS от Microsoft, специально предназначенный для обнаружения и запуска элементов сценариев npm: vscode-npm-scripts