gulp - Gulp 泵错误:错误:泵至少需要两个流
问题描述
我在 Gulp 中创建了一个简单的删除任务。它删除 dist 文件夹
// DELETE TASK
var DIST_PATH = 'public/dist';
gulp.task('clean', function(cb) {
pump([del.sync([DIST_PATH])], cb);
});
但我收到此错误消息:错误:泵至少需要两个流
发生了什么以及如何解决这个问题的任何想法?谢谢利诺
解决方案
简短回答:您只在数组中提供 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)。每个人都说:'使用泵'。所以我开始使用泵,然后得到了和你一样的错误。这似乎是一个完全难以理解的错误消息,但却为您提供了所需的线索。
您需要在泵的第一个参数(数组)中提供至少 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 个流。
我的两分钱
推荐阅读
- reactjs - 反应管理员:
不适用于自定义 dataProvider - google-apps-script - 在 Google 表格中插入新行或编辑行时添加时间戳
- javascript - iFrame window.postMessage - 数据始终为空字符串
- javascript - 使用动画(Javascript)动态更新 amCharts 4 世界地图?
- r - Fisher 对 2x10 偶然性的检验(单元格的 >20% 中的预期值 <6) - 解决 R 工作区错误,或者建议替代统计检验?
- cocoa - Quartz 2D 实现 html5 画布 globalCompositeOperation
- angular - TypeError:this.responsearray.find 不是函数角度
- installation - 我应该怎么办?我已经在桌面上安装了 NetBeans
- c - 即使我正在使用 select(),read() / recv() 函数会卡住吗?
- arrays - 用于 vlookup 的 Vba 代码将多个结果返回到单独的行中