我正在使用带有gulp@4
的多个文件,其中主gulpfile.js
在./tasks/
目录中包含所有其他文件。我们使用NPM Gulp-hub软件包将./tasks/
目录包含多个gulpfiles
。但是,在调用tasks
时,我们会收到以下错误消息。
使用之前未定义的远期引用的任务的清洁量
未定义
如何在主gulpfile.js
中包含多个gulpfiles
,以便我们可以调用tasks
?
当前gulpfile.js
:
'use strict';
var gulp = require('gulp'),
HubRegistry = require('gulp-hub');
var genericHub = new HubRegistry('./tasks/scripts.js');
gulp.registry(genericHub);
var watchers = function(done) {
gulp.watch('src/*.js', gulp.parallel('clean-minify-js'));
done();
}
gulp.task('watch', gulp.series(watchers));
当前./tasks/scripts.js
'use strict';
var gulp = require('gulp'),
clean = require('gulp-clean'),
uglify = require('gulp-uglify');
gulp.task('clean-scripts', function() {
return gulp.src(dest.js)
.pipe(clean({read:false, force: true});
});
gulp.task('minify-js', gulp.series('clean-scripts', function() {
gulp.src(src.js)
.pipe(uglify())
.pipe(gulp.dest(dest.js));
}));
gulp.task('clean-minify-js', gulp.series('minify-js'));
文件夹结构:
-
some/path/gulpfile.js
-
some/path/tasks/scripts.js
要解决问题,我必须执行以下操作。
- 使用require-dir软件包将所有文件包括在
./tasks/
目录中。 - 将专为
gulp@3.9.1
设计的任务转换为gulp@4
的功能 - 使用
gulp.series
设置功能以按我们需要的特定顺序运行
Gulpfile.js
'use strict';
var gulp = require('gulp'),
requireDir = require('require-dir');
requireDir('./tasks/');
var watchers = function(done) {
gulp.watch('src/*.js', gulp.parallel('clean-minify-js'));
done();
}
gulp.task('watch', gulp.series(watchers));
./任务/scripts.js
'use strict';
var gulp = require('gulp'),
clean = require('gulp-clean'),
uglify = require('gulp-uglify');
function cleanScripts() {
return gulp.src(dest.js)
.pipe(clean({read:false, force: true});
}
function minJs() {
return gulp.src(src.js)
.pipe(uglify())
.pipe(gulp.dest(dest.js));
}
gulp.task('clean-minify-js', gulp.series(cleanScripts, minJs));