javascript - 使用前未定义的前向引用任务

标签 javascript node.js npm gulp

我在 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/

相关文章:

javascript - 尝试通过 Angular Controller 使用 Google Geocode API 进行地理编码,值未定义

javascript - 如何在两个表格单元格之间拉伸(stretch)一个 div?

node.js - Mongoose findOne ObjectId 数组返回 null

javascript - 嵌套对象迭代并返回空值键名nodejs

node.js - npm install 在 node_modules 中创建过多的依赖项

javascript - Semantic-ui 主菜单 CSS 悬停和焦点

javascript - JavaScript 中的方法重载

javascript - ECMAScript 6 支持 node.js 及其不同的包,例如原生的express body_parser

node.js - 如何从另一个 Github 项目添加依赖项?

angular - ERESOLVE 无法解析依赖树?