2017-01-12 140 views
0

我只是想知道是否可以在Gulp命令中传递参数。在命令中传递Gulp参数

比如我想用下面的命令:

gulp alpha 

那么我想该命令的alpha部分传递到我的风格的任务,像这样:

gulp.task('styles', ([ ALPHA ARGUMENT HERE ]) => { 
    return gulp.src('src/styles/theme/[ ALPHA ARGUMENT HERE ]/main.scss') 
     .pipe(sassGlob()) 
     .pipe(sass({ 
      style: 'expanded', 
      quiet: true, 
      'default-encoding': 'UTF-8' 
     })) 
     .pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4')) 
     .pipe(gulp.dest('public/css')) 
     //.pipe(rename({ suffix: '.min' })) 
     .pipe(rename('[ ALPHA ARGUMENT HERE ]-all.min.css')) 
     .pipe(minifycss({ 
      compatibility: 'ie8', 
      noAdvanced: true 
     })) 
     .pipe(gulp.dest('public/css/')); 
}); 

然后当我运行默认的Gulp任务时:

// Default Task Init 

gulp.task('default',() => { 
    gulp.start('production'); 
}); 

gulp.task('production', ['clean'],() => { 
    gulp.start('styles', 'images', 'fonts', 'scripts'); 
}); 

我希望我的样式任务能够生成在我的public/css/文件夹中创建了一个名为alpha-all.min.css的文件。

我目前使用Gulp Yargs来直接使用命令行中的任务。

这是可能的在Gulp?

+0

不可能。 'gulp alpha'告诉gulp运行一个名为'alpha'的任务,而不是使用参数'alpha'运行'default'任务。没有办法规避这种情况。 –

+0

@SvenSchoenung,我设法使用Yargs来做到这一点,但并不完美,但工作:) –

回答

0

我设法解决这个我自己,如果有人想知道如何做到这一点我用了以下任务:

var theme = argv.destination; 

gulp.task('styles',() => { 
    return gulp.src('src/styles/theme/' + theme + '/main.scss') 
     .pipe(sassGlob()) 
     .pipe(sass({ 
      style: 'expanded', 
      quiet: true, 
      'default-encoding': 'UTF-8' 
     })) 
     .pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4')) 
     .pipe(gulp.dest('public/css')) 
     //.pipe(rename({ suffix: '.min' })) 
     .pipe(rename(theme + '-all.min.css')) 
     .pipe(minifycss({ 
      compatibility: 'ie8', 
      noAdvanced: true 
     })) 
     .pipe(gulp.dest('public/css/')); 
}); 

通过使用咕嘟咕嘟Yargs它我能够通过使用gulp --destination=alpha参数。