web-dev-qa-db-ja.com

「preLaunchTasks」の使用とVisual Studioコードでのタスクの命名

ドキュメント によると、デバッグする前にプログラムを起動することが可能です:

各デバッグセッションの開始前にタスクを起動するには、preLaunchTaskを、tasksで指定されたタスクのいずれかのnameに設定します。 json。

「名前付き」タスクの構文例を見たことはありませんが、 スキーマドキュメントtaskNameというプロパティを明らかにします。 launch.json preLaunchTasksをタスクにリンクするためにそれを使用しようとしましたが、うまくいきませんでした。プログラムを起動すると、Visual Studio Codeが次のエラーを報告しました。

固有のタスク「launch-core」が見つかりませんでした。タスクが存在し、一意の名前を持っていることを確認してください。

カスタムの「名前付き」タスクは次のようになりました。

{
    "taskName": "launch-core",
    "version": "0.1.0",
    "command": "C:\\utils\\mystuff.exe",
    // The command is a Shell script
    "isShellCommand": true,
    // Show the output window only if unrecognized errors occur.
    "showOutput": "silent",
}

次に、プロパティ名をtaskNameからnameこのリンクに基づいて に変更してみました。それもうまくいきませんでした。

Intellisenseは、タスクに名前を付ける方法を提案しません。

Tasks.jsonファイルでタスクに一意の名前を付ける方法を知っている人はいますか?構文は何ですか?プロパティ名は何ですか?

最終的には、独自のnode.jsアプリを起動する前に、2つまたは3つのnode.jsプロセスを実行したいと思います。たとえば、デバッガーでアプリを起動する前に、次の3つのアプリを起動したいと思います。

sh -c 'cd ./manager/ && node manager.js'
sh -c 'cd ./adapter/ && node adapter.js'
sh -c 'cd ./core/ && node core.js'

Windowsボックスで作業している場合、私のタスクは次のようになります。

{
    "taskName": "core-launch",
    "version": "0.1.0",

    // The command is tsc. Assumes that tsc has been installed using npm install -g TypeScript
    "command": "start",

    // The command is a Shell script
    "isShellCommand": true,

    // Show the output window only if unrecognized errors occur.
    "showOutput": "silent",

    // args is the HelloWorld program to compile.
    "args": [
        "ACD-Manager",
        "/B",
        "/D",
        "./manager/",
        "node",
        "manager.js"
        ]
}

cmd start capability を使用した上記のタスク。 1つではなく複数のノードタスクを起動する方法はまだわかりませんが、このタスク名の問題のため、1つのタスクを起動することすらできません。

Tasks.jsonファイルでタスクに名前を付けるにはどうすればよいですか?

26
Brent Arias

それで、まだ関連がある場合、または誰かが同じ問題のこのスレッドを見つけた場合、私はそれがどのように機能するかを見つけました:

tasks.jsonで、'tasks'配列を作成する必要があります-コードヒントが役立ちます-オブジェクトの配列を保持します。オブジェクト内では、'taskName'キーと値のペアを使用できます。

例:

{
    "version": "0.1.0",
    "command": "npm",
    "isShellCommand": true,
    "args": ["run-script", "webpack"],
    "showOutput": "always",
    "tasks": [
        { 
            "taskName": "runwebpack",
            "suppressTaskName": true
        }
    ]
}

私の場合、npm run-script webpackコマンドを実行してからプロジェクトを実行します。 launch.jsonファイルでは、"preLaunchTask": "runwebpack"は現在動作します。

注:この例では、suppressTaskNameはtrueです。省略するか、falseに設定すると、VS Codeはコマンドの後にtaskNameを追加します。

より一般的なアプローチは次のようになります。

{
    "version": "0.1.0",
    "command": "npm",
    "isShellCommand": true,
    "args": ["run-script"],
    "showOutput": "always",
    "tasks": [
        { "taskName": "webpack" }
    ]
}

後者の例では、tasks配列を他のスクリプトで拡張して実行することもできます。

私の使い方のヒント:npm run-scriptは何をすべきかをpackage.jsonファイルのscriptsから取得しますオブジェクト。

編集:これはVS Code 1.3.1で動作します

18
zeroxx1986

FWIW、私はVS Code 1.20.1を使用しており、ここにpreLaunchTaskを機能させる方法があります

launch.json

{
  "version": "0.2.0",
  "configurations": [
    {
        "type": "node",
        "request": "launch",
        ...
        "preLaunchTask": "npm: build",
    }
  ]
}

私のpackage.json

{
  ...
  "scripts": {
     "build": "tsc"
     ...
  }
}
14
Logan

バージョン2.0.0構成では、labelの代わりにtaskNameを使用するようになりました。

package.json:

...
"scripts": {
    "tsc": "tsc",
    ...
}
...

launch.json(私のソースはsrcディレクトリにあり、tscdistディレクトリにコンパイルされます):

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "preLaunchTask": "Compile",
            "name": "Launch Program",
            "program": "${workspaceFolder}/src/index.ts",
            "outFiles": [
                "${workspaceFolder}/dist/**/*.js"
            ],
            "protocol": "inspector",
            "sourceMaps": true
        }
    ]
}

tasks.json:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Compile",
            "type": "npm",
            "script": "tsc",
            "problemMatcher": []
        }
    ]
}
9
Eli Algranti

Gulpに関連して使用されるtaskNameを実際に見ただけです。他にもあるとは思いますが、私が洞察することはほとんどありません。おそらくこれは、あなたがすでに持っているものでスタートを切ることができますか?

VSCODEで事前起動タスクを実行する

0
LimpingNinja

質問のタイトルは次のとおりです。

「「preLaunchTasks」の使用とVisual Studioコードでのタスクの命名

PreLaunchTask *** s ***を定義する必要がありました。

here で説明されているdependOnプロパティを使用して、複数のタスクを設定できます。

たとえば、tasks.jsonの複合タスク:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Client Build",
            "command": "gulp",
            "args": ["build"],
            "options": {
                "cwd": "${workspaceRoot}/client"
            }
        },
        {
            "label": "Server Build",
            "command": "gulp",
            "args": ["build"],
            "options": {
                "cwd": "${workspaceRoot}/server"
            }
        },
        {
            "label": "Build",
            "dependsOn": ["Client Build", "Server Build"]
        }
    ]
}

タスクの命名に関する詳細情報を見つけることができます こちら

0
1.21 gigawatts

Vscode 1.36.1 (1.36.1)の場合:

tasks.json

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "build:tsc",
      "type": "npm",
      "script": "build:tsc"
    },
    {
      "label": "clean",
      "type": "npm",
      "script": "clean"
    },
    {
      "label": "build",
      "dependsOrder": "sequence",
      "dependsOn": ["clean", "build:tsc"]
    }
  ]
}

launch.json

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceFolder}/dist/main.js",
      "preLaunchTask": "build",
      "outFiles": ["${workspaceFolder}/dist/**/*.js"],
      "console": "integratedTerminal"
    }
  ]
}

実行する前にnode ${workspaceFolder}/dist/main.jspreLaunchTaskは最初にbuildタスクを実行します。このタスクには、cleanbuildの2つのサブタスクが含まれます。最初にcleanタスクを実行し、次にbuildタスクを実行します。

preLaunchTaskオプションにタスクのラベルを指定できます。

0
slideshowp2