使用前未定义的转发参考任务



我正在使用带有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));

最新更新