gulp - 在特定文件上运行任务的命令行

时间:2016-08-24 08:51:45

标签: node.js command-line terminal gulp

我有一个任务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,但我认为这不是我想要的。

由于

1 个答案:

答案 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 

将像以前一样运行脚本