我有一个任务scripts
可以使用watch
上的脚本执行所有正常操作:
var folderScripts = "assets/scripts";
gulp.task('scripts', function(){
gulp.src([
folderScripts+'/**/*.js',
'!'+folderScripts+'/**/_*.js',
'!'+folderScripts+'/**/*.min.js'
])
// uglify, rename, etc etc...
.pipe(gulp.dest( function(file) { return file.base; } ));
});
有时,我可能只需要为该文件夹之外的特定文件运行该任务scripts
,例如:assets/plugins/flexsider/flexslider.js
我想知道是否可以在终端上执行此类操作:
gulp scripts assets/plugins/flexsider/flexslider.js
然后任务脚本会替换动态内容的gulp.src()
内容,这种情况为assets/plugins/flexsider/flexslider.js
,就像这样:
var folderScripts = "assets/scripts";
gulp.task('scripts', function(){
gulp.src('assets/plugins/flexsider/flexslider.js') //this would be the "flag" I passed on terminal line
// uglify, rename, etc etc...
.pipe(gulp.dest( function(file) { return file.base; } ));
});
我搜索了gulp-exec和similares,但我认为这不是我想要的。
由于
答案 0 :(得分:1)
安装yargs
npm install yargs --save-dev
您的任务:
gulp.task('scripts', function(){
// require yargs
var args = require('yargs').argv;
var arraySources = [
folderScripts+'/**/*.js',
'!'+folderScripts+'/**/_*.js',
'!'+folderScripts+'/**/*.min.js'];
// check for an argument called file (or whatever you want)
// and set the source to the file if the argument exists. Otherwise set it to the array
var source = args.file? args.file : arraySources;
gulp.src(source)
// uglify, rename, etc etc...
.pipe(gulp.dest( function(file) { return file.base; } ));
});
从提示符处调用您的任务:
gulp scripts --file=assets/plugins/flexsider/flexslider.js
只会在该文件上运行脚本。
或强>
gulp scripts
将像以前一样运行脚本