2016-11-16 75 views
0

我试图在我的Gulp文件中使用Browserify,但似乎无论如何设置它,它总是会抛出一个错误,读取“dest .write不是一个函数“。我最初开始使用gulp-concat执行此任务:Gulp和Browserify总是给“dest.write不是函数”错误

gulp.task('scripts', function() 
{ 
    return gulp.src(['src/shared/js/one.js', 'src/shared/js/two.js', 'src/shared/js/*.js']) 
     .pipe(browserify() 
     .pipe(concat('main.js')) 
     .pipe(gulp.dest('dist/js')) 
     .pipe(browserSync.stream()); 
}); 

当我注释掉了browserify()行时,一切正常。虽然周围的Googling为解决该错误信息,我发现this page当有人链接到它,说:“吞气文档对这一解决办法狂欢”(here):

var gulp = require('gulp'); 
var browserify = require('browserify'); 
var transform = require('vinyl-transform'); 
var uglify = require('gulp-uglify'); 

gulp.task('browserify', function() { 
    var browserified = transform(function(filename) { 
    var b = browserify(filename); 
    return b.bundle(); 
    }); 

    return gulp.src(['./src/*.js']) 
    .pipe(browserified) 
    .pipe(uglify()) 
    .pipe(gulp.dest('./dist')); 
}); 

我进一步挖,和阅读vinyl-transform没有按不以这种方式与Browserify一起工作,因为没有写入流,并且首选的方法是使用vinyl-source-stream代替。我现在目前正在使用此建议的解决方案,但仍然得到错误:

gulp.task('scripts', function() 
{ 
    return gulp.src(['src/shared/js/one.js', 'src/shared/js/two.js', 'src/shared/js/*.js']) 
     .pipe(browserify('src/shared/js/*.js', { 
      debug: true, 
      extensions: ['.js'] 
     })) 
     .bundle() 
     .pipe(source('main.js')) 
     .pipe(buffer()) 
     .pipe(gulp.dest('dist/js')) 
     .pipe(browserSync.stream()); 
}); 

调整以各种方式browserify()引用并没有改变任何东西。谁能告诉我我做错了什么?

+0

难道仅仅是错字'管(browserify()'__)__ < - 在你的第一个缺少一个右')'代码片段? – Molda

+0

可悲的是没有。不知道当我在这里复制/粘贴时怎么会被遗漏,但我重新运行它,但仍然产生了错误。 – pWEN

回答

0

下面是在完全相同的情况下为我工作的解决方案。 我花了一些时间尝试使用browserify进行乙烯基转换工作,但没有成功,所以不得不恢复乙烯基源流和乙烯基缓冲液组合。

我用下面的要点,作为我的代码片断基本参考: https://gist.github.com/stoikerty/cfa49330a9609f6f8d2d

var gulp = require('gulp'); 
var source = require('vinyl-source-stream'); 
var buffer = require('vinyl-buffer'); 
var browserify = require('browserify'); 
var uglify = require('gulp-uglify'); 

gulp.task('browserify', function() { 
    var b = browserify({ 
    entries: './js/test.js', // Only need initial file, browserify finds the deps 
    debug: true  // Enable sourcemaps 
    }); 

    return b.bundle() 
    .pipe(source('./js/test.js')) // destination file for browserify, relative to gulp.dest 
    .pipe(buffer()) 
    .pipe(uglify()) 
    .pipe(gulp.dest('./dist')); 
});