0

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

我的网络应用程序中有多个主题,比方说:

/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?

4

2 回答 2

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.

于 2014-09-19T09:46:56.383 回答
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

于 2015-10-19T13:08:10.050 回答