web-dev-qa-db-ja.com

tasks.jsonのみを使用してVisual Studio Codeでタスクをチェーンする方法は?

Visual Studio Code のドキュメントを掘り下げて、複数の連続したタスクをtasks.jsonファイル。

tasks配列は、同じコマンドに異なる引数を作成することのみを許可します。この例では、コマンドはechoです。

{
    "version": "0.1.0",
    "command": "echo",
    "isShellCommand": true,
    "args": [],
    "showOutput": "always",
    "echoCommand": true,
    "suppressTaskName": true,
    "tasks": [
        {
            "taskName": "hello",
            "args": ["Hello World"]
        },
        {
            "taskName": "bye",
            "args": ["Good Bye"]
        }
    ]
}

Tasks.jsonでは、複数のタスクを連続して実行できますか?たとえば、tscの後にuglify

19
Kokodoko

dependsOn機能は バージョン1.10. で出荷されました。たとえば、TypeScriptで単一ファイルスクリプトをコンパイルおよび実行するためにこれを使用しています。

{
    "version": "2.0.0",
    "tasks": [
        {
            "command": "tsc -p ${cwd}/2017-play",
            "label": "tsc-compile",
            "type": "Shell"
        },
        {
            "command": "node ${cwd}/2017-play/build/${fileBasenameNoExtension}.js",
            "label": "node-exec",
            "type": "Shell",
            "dependsOn": [
                "tsc-compile"
            ],
            "problemMatcher": []
        }
    ]
}
19
Ben Creasy

Tcsビルドを実行し、シェルスクリプトを使用してソースを別のフォルダーにコピーする作業例を次に示します。これは、StackOverflowに関するさまざまな投稿と、次のドキュメントに基づいています。

https://code.visualstudio.com/updates/v1_10#_more-work-on-terminal-runner

Ben Creasyの投稿に示されているように、2つ目のタスクが最初のタスクに依存する2つのタスクでtasks.jsonを作成することもできます。2つ目のタスクが呼び出されると、2つのタスクが実行されます。どちらか、または両方を実行できる必要がありました。ベンのおかげで、この投稿に行く前に解決策を見つけるのに苦労しました。

ところで、シェルファイルを含める場合、コマンドは、スクリプトが配置されているフォルダではなく、プロジェクトフォルダを参照して実行されます。

{
 // See https://go.Microsoft.com/fwlink/?LinkId=733558
 // for the documentation about the tasks.json format
 "version": "2.0.0",
 "tasks": [
  {
   "type": "TypeScript",
   "tsconfig": "tsconfig.json",
   "problemMatcher": [
    "$tsc"
   ],
   "group": "build",
   "identifier": "build"
  },
  {
   "label": "Copy files",
   "type": "Shell",
   "command": "./scripts/copysrc.sh",
   "windows": {
    "command": ".\\scripts\\copysrc.cmd"
   },
   "group": "build",
   "presentation": {
    "reveal": "always"
   },
   "problemMatcher": [],
   "dependsOn": "build"
  },
  {
   "label": "Build and copy",
   "dependsOn": [
    "build",
    "Copy files"
   ],
   "group": "build",
   "problemMatcher": []
  }
 ]
}
1
pasx