【发布时间】: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
谢谢,
【问题讨论】: