2016-04-06 10 views
1

私は自分のtypescriptプロジェクトのための異なるビルドタスクをVSコードで定義しようとしています。私のtasks.jsonは、タスクが1つしかない限り動作します。1つのtasks.jsonでいくつかのtypescriptコンパイルタスクを定義する方法は?

tasks.json(コマンドパレット>タスクTSC)

{ 
"version": "0.1.0", 
"command": "tsc", 
"showOutput": "silent", 
"args": ["-p", "."], 
"problemMatcher": "$tsc" 
"isShellCommand": true 
} 

私はいくつかのタスクを定義するとき、私は、コマンドパレットからそれらを選択することができますが、彼らは次のエラーを生成:

TS5042を:オプション「プロジェクトは、」コマンドラインでソースファイルを混在させることはできません

tasks.json(コマンドパレット>タスクdoSomethingの)

{ 
"version": "0.1.0", 
"command": "tsc", 
"isShellCommand": true, 
"tasks":[ 
    { 
     "taskName":"dosomething", 
     "showOutput": "silent", 
     "args": ["-p", "."], 
     "problemMatcher": "$tsc" 
    }, 
    { 
     "taskName":"compileandwatch", 
     "showOutput": "silent", 
     "args": ["-p", ".", "-w"], 
     "problemMatcher": "$tsc" 
    } 
] 
} 

質問:tasks.jsonでいくつかのタスクを定義する方法は?どのパラメータを "タスク"に含めるべきか、どのパラメータをルートに入れるべきか? microsoft docsに例はありません。

私は空の「引数」を残してみました:

"args": [], 

しかし、私は、私はあなたが各タスクに suppressTaskName = trueを設定するのを忘れて考える

答えて

1

が見つかりませんこのエラーに「dosomething.ts」を取得します。以下は私のために働くtasks.jsonの例です。

{ 
    "version": "0.1.0", 
    "command": "node", 
    "windows": { 
     "command": "node.exe" 
    }, 
    "isShellCommand": true, 
    "tasks": [ 
     { 
      "taskName": "build.dev", 
      "args": ["${workspaceRoot}/node_modules/gulp/bin/gulp.js", "build.dev"], 
      "isBuildCommand": true, 
      "suppressTaskName": true, 
      "problemMatcher": [ 
       "$tsc" 
      ] 
     }, 
     { 
      "taskName": "document.code", 
      "args": ["${workspaceRoot}/node_modules/gulp/bin/gulp.js", "document.code"], 
      "suppressTaskName": true, 
      "problemMatcher": [] 
     }, 
     { 
      "taskName": "start.specs.web.server", 
      "args": ["${workspaceRoot}/node_modules/http-server/bin/http-server", 
        "${workspaceRoot}/dist/dev/specs"], 
      "suppressTaskName": true, 
      "problemMatcher": [] 
     }   
    ] 
} 

・ホープ、このことができます:この方法argsは、タスク名コマンドを結果には影響しません、何を実行する必要があるとそれに渡されたパラメータの両方を定義することに注意してください。

+0

ありがとう、私はこれを試してみます。しかし、 "suppressTaskName"は何をしますか?なぜ私はタスク名を抑制したいのですか? – Kokodoko

+0

タスク名は、実行するプログラム名を指定するために使用されません。だからあなたが 'dosomething'という名前のタスクを持っているとき、vscodeは' node dosomething ../../../gulp.js ... 'と' args'の引数を実行しようとしません。代わりに引数だけを使ってコマンドを作成します。私のサンプル設定を見てください - 'build.dev'タスクは' node ../../../gulp.js ... 'を実行します – Amid

+0

ありがとう。これは実際にそれらのコマンドを実行するノードを持つことに依存しますが、これは動作します。 tasks.jsonの中に完全に異なるコマンドを持つ方法はないようです(例えば、node-sassコンパイルコマンドとtscコンパイルコマンド) – Kokodoko

関連する問題