Gulp泵错误:错误:泵最少需要两个流

时间:2018-08-07 03:58:54

标签: gulp

我在Gulp中创建了一个简单的删除任务。删除dist文件夹

// DELETE TASK
var DIST_PATH = 'public/dist';
gulp.task('clean', function(cb) {
  pump([del.sync([DIST_PATH])], cb);
});

但是我收到此错误消息:错误:泵至少需要两个流

正在发生什么,如何解决这个问题有什么想法? 谢谢 莉诺

1 个答案:

答案 0 :(得分:1)

简短答案::您只能在数组中提供1个流,这是泵的第一个参数,而最小值是2个。考虑做

// DELETE TASK
var DIST_PATH = 'public/dist';
gulp.task('clean', function(cb) {
  del.sync([DIST_PATH])
  .on('error', function(error) { console.error('ERROR: '+ error.toString() } )
});

详细答案: 我试图使我的串联es6脚本丑陋,但失败了,使我陷入了这些无用的堆栈跟踪中。这是我第一次使用Gulp,因此存在很多障碍(例如,开箱即用的uglify不支持javascript6)。 大家都说:“用泵”。因此,我开始使用泵,然后得到与您相同的错误。似乎是完全无法理解的错误消息,但却为您提供了所需的线索。

您需要在Pump的第一个参数(数组)中至少提供2个流。对于gulp新手:流意味着您希望gulp执行的(子)任务的字符串。因此以下代码给了我与您相同的错误,因为我只为泵提供一个流。

var gulp = require('gulp');
var concat = require("gulp-concat");
var gutil = require('gulp-util');
var uglifyes = require('uglify-es'); //for es6 to work
var composer = require('gulp-uglify/composer');//for es6 to work
var uglify = composer(uglifyes, console);//for es6 to work
var rename = require('gulp-rename');
var pump = require('pump');

gulp.task('default', function(callback) {
  pump([
      gulp.src(['js/file0.js','js/file1.js')
      .pipe(concat('all.js'))
      .pipe(gulp.dest('build'))
      .pipe(uglify())
      .pipe(rename({ extname: '.min.js' }))
      .pipe(gulp.dest('build'))
    ],
    callback);
});

但是随后仔细查看示例,发现您必须在其单独的子任务中剪切流。我将gulp任务重写为

gulp.task('default', function(callback) {
  pump([
      gulp.src(['js/file0.js','js/file1.js']),
      concat('all.js'),
      gulp.dest('build'),
      uglify(),
      rename({ extname: '.min.js' }),
      gulp.dest('build')
    ],
    callback);
});

请注意,所有.pipe()调用已被删除,所有子任务(即流)已被逗号分隔,从而在Pump的数组参数中添加的不是1个流,而是至少添加了2个流。

我的两分钱