我在 gulp@4
中使用多个文件,其中主 gulpfile.js
包含 ./tasks/
目录中的所有其他文件。我们正在使用npm gulp-hub包以包含多个 gulpfiles
和 ./tasks/
目录。但是,我们在调用tasks
时收到以下错误消息。
Forward referenced tasks 'clean-minify-js` not defined before use
我们如何在主 gulpfile.js
中包含多个 gulpfiles
以便我们可以调用任务
?
当前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
一些/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));
./tasks/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));
关于javascript - 使用前未定义的前向引用任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55033904/