我使用“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
感谢,
答案 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 。