我对Gulp还是个新手,但是通过本教程,我设置了一个Gulp任务,该任务旨在浏览特定目录中的javascript文件,并将它们通过管道传输到另一个目录--非常简单。我看过其他一些教程,但是这个方法似乎是最简洁的。以下是我的代码:
var gulp = require('gulp');
var browserify = require('browserify');
var transform = require('vinyl-transform');
gulp.task('js', function() {
var browserified = transform(function(filename) {
return browserify(filename).bundle();
});
return gulp.src(['./public/js/src/**/*.js'])
.pipe(browserified)
.pipe(gulp.dest('./public/js/dist'));
});
上面的代码与我见过的许多其他这类实现非常相似,但是当我尝试使用gulp js
运行它时,它产生了以下错误:
[15:47:13] Using gulp file
~/development/launchpad/workshop/gulpfile.js
[15:47:13] Starting 'js'...
_stream_readable.js:540
var ret = dest.write(chunk);
^
TypeError: undefined is not a function
at Producer.ondata (_stream_readable.js:540:20)
at Producer.emit (events.js:107:17)
at Producer.Readable.read (_stream_readable.js:373:10)
at flow (_stream_readable.js:750:26)
at resume_ (_stream_readable.js:730:3)
at _stream_readable.js:717:7
at process._tickCallback (node.js:355:11)
有人知道可能导致此错误的原因吗?
(As顺便说一句,我想看看堆栈跟踪中的文件,试图找出这里发生了什么,但在Spotlight中搜索_stream_readable. js会产生大约20个同名文件,所有文件似乎都是节点模块。是否有办法在堆栈跟踪中确定文件的完整路径?)
3条答案
按热度按时间i1icjdpr1#
dwthyt8l2#
如果您希望browserify使用gulp. dest并创建一个文件,其中我们通过.pipe(gulp.dest('src/js'))指定它,那么您需要下载vinyl-source-stream并将其放入.pipe(source('bundle.js'))中,但实际上是在browserify中,即bundle方法接受回调,并且不需要dest或source
1rhkuytd3#
不幸的是,这是browserify/gulp的一个问题,nothing that vinyl-transform可以解决这个问题。解决方案是使用
vinyl-source-stream
和vinyl-buffer
:更多信息here.