想知道实现这一目标的最佳方法是什么。
我的网络应用中有多个主题,让我们说:
/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?
答案 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)
您可以编写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