【问题标题】:Forward reference tasks not defined before use使用前未定义的前向参考任务
【发布时间】:2019-03-06 23:40:15
【问题描述】:

我正在使用带有gulp@4 的多个文件,其中主gulpfile.js 包括./tasks/ 目录中的所有其他文件。我们使用npm gulp-hub 包来包含多个gulpfiles./tasks/ 目录。但是,我们在调用 tasks 时收到以下错误消息。

使用前未定义的转发引用任务“clean-minify-js”

我们如何在主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

【问题讨论】:

    标签: javascript node.js npm gulp


    【解决方案1】:

    要解决此问题,我必须执行以下操作。

    • 使用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));
    

    【讨论】:

      猜你喜欢
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 1970-01-01
      • 2019-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多