2016-11-16 20 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')); 
});