【问题标题】:how to pass multiple args to vscode task command?如何将多个参数传递给 vscode 任务命令?
【发布时间】:2017-10-30 15:05:35
【问题描述】:

在 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

谢谢,

【问题讨论】:

    标签: visual-studio-code


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我做了几个小改动,试试:

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

      并且您的整个代码运行良好。确保在修改 tasks.json 后重新加载 vscode

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-23
        • 2018-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-02
        相关资源
        最近更新 更多