如何将多个args传递给vscode任务命令?

时间:2017-10-30 15:05:35

标签: visual-studio-code

在tasks.json中的

我使用“args”属性来指定传递给“command”的参数:“gulp”。但是当我在vscode中运行任务时,只有第一个参数被传递给gulp。

我想针对单个文件运行gulp任务。在gulpfile.js中,我使用process.argv数组来检索命令行参数。因此,在命令行中输入“gulp copy3 --file abc.js”并运行copy3任务。然后代码读取argv数组以获取要复制的文件的名称。

此代码适用于命令行。但是当我在vscode中将其作为任务运行时不起作用。怎么做?

gulpfile.js代码:

gulp.task('copy3', function( )
{
  console.log(process.argv) ;

  let pattern = '*.js' ;

    // single file to copy
    if (( process.argv.length >= 5 ) && ( process.argv[3] == '--file' ))
    {
      let fileName = process.argv[4] ;
      pattern = fileName ;
    }

    console.log('pattern:' + pattern ) ;

  return gulp.src(pattern).pipe(gulp.dest('dev'));
}) ;

tasks.json文件

{
  "version": "2.0.0",
  "tasks": [
    {
      "taskName": "copy3",
      "command": "gulp",
      "args": [ "copy3", "--file", "${fileBasename}" ],
      "problemMatcher": []
    }
  ]
}

这是终端输出:

[10:52:57] Using gulpfile C:\vscTest\rpgproj\gulpfile.js
[10:52:57] Starting 'copy3'...
[ 'C:\\Program Files\\nodejs\\node.exe',
  'C:\\vscTest\\rpgproj\\node_modules\\gulp\\bin\\gulp.js',
  'copy3' ]
pattern:*.js
[10:52:57] Finished 'copy3' after 16 ms

感谢,

2 个答案:

答案 0 :(得分:0)

VSCode似乎具有内置的gulp extension。这似乎在扫描您的gulpfile中的任务并为您列出它们。它似乎也忽略了args选项。

解决方法是使用gulp的完整路径作为命令,例如./node_modules/.bin/gulp绕过它。

答案 1 :(得分:0)

我做了一些小改动,尝试:

{
    "label": "Tasks: copy3",
    "type": "shell",
    "command": "gulp",
    "args": [ "copy3", "--file", "${fileBasename}" ],
    "problemMatcher": []
}

,您的整个代码运行完美。修改task.json之后,请确保重新加载 vscode