一个gulp任务文件pr主题

时间:2014-09-18 14:22:26

标签: javascript gulp gulp-watch

想知道实现这一目标的最佳方法是什么。

我的网络应用中有多个主题,让我们说:

/themes/theme_one/
/themes/theme_two/
… etc.

而且我不想写一个处理所有这些的大gulp文件。相反,我希望能够只编写gulp theme_one,这将自动运行与该主题相关的所有gulp任务。

我意识到我真正在做的是为gulp --gulpfile themes/theme_one/gulpfile.js

创建一个快捷方式

我在想一个像这样的根Gulpfile.js:

var gulp   = require('gulp');
var themes = ['theme_one', 'theme_two', 'theme_three'];

themes.forEach(function(theme){
    gulp.task(theme, function(){
        require(__dirname+'/themes/'+theme+'/gulp-tasks.js');
        gulp.run('default'); // all theme gulpfiles need a default task
    });
});

我看到gulp.run已被弃用。我该如何重构这个以避免使用gulp.run?

2 个答案:

答案 0 :(得分:1)

您不必使用gulp来执行各种gulp任务,您可以执行cd themes/theme_one/ && gulp或编写程序来执行此操作而无需使用gulp。

var path = require('path');
var process = require('child_process');

var themeDir = process.args[0] || 'theme_one';
var directory = path.join(__dirname + '/themes/' + themeDir);

process.exec('cd ' + directory + ' && gulp', function(err, stdout, stderr) {
    if (err) {
        console.log(stderr);
        console.log('err');
    } else {
        console.log(stdout);
    }
});

因此,您可以使用node index theme_two运行此功能。

答案 1 :(得分:0)

为每个主题使用gulp任务

您可以编写gulpfile并为每个进程使用任务。

例如:

// setup requires ...

gulp.task('theme_1', function () {
  return gulp.src( '/theme/1/*/**' )
  .pipe(zip('theme_1.zip'))
  .pipe(gulp.dest('dist'));
});

gulp.task('theme_2', function () {
  return gulp.src( '/theme/2/*/**' )
  .pipe(zip('theme_2.zip'))
  .pipe(gulp.dest('dist'));
});

gulp.task('default', ['theme_1','theme_2']);

只需输入以下命令即可运行主题任务:

gulp theme_1
// or
gulp theme_2

默认情况下只需输入gulp

即可运行所有主题任务