Você chegou bem perto, exceto por uma coisa:
- você precisa converter o objeto de arquivo de vinil de streaming fornecido por
source()
com vinyl-buffer
porque gulp-uglify
(e a maioria dos plug-ins gulp) funciona em objetos de arquivo de vinil em buffer
Então você teria isso em vez
var browserify = require('browserify');
var gulp = require('gulp');
var uglify = require('gulp-uglify');
var source = require('vinyl-source-stream');
var buffer = require('vinyl-buffer');
gulp.task('browserify', function() {
return browserify('./source/scripts/app.js')
.bundle()
.pipe(source('bundle.js')) // gives streaming vinyl file object
.pipe(buffer()) // <----- convert from streaming to buffered vinyl file object
.pipe(uglify()) // now gulp-uglify works
.pipe(gulp.dest('./build/scripts'));
});
Ou você pode escolher usar, em vinyl-transform
vez disso, o que cuida de streaming e de objetos de arquivo de vinil em buffer para você, como
var gulp = require('gulp');
var browserify = require('browserify');
var transform = require('vinyl-transform');
var uglify = require('gulp-uglify');
gulp.task('build', function () {
// use `vinyl-transform` to wrap the regular ReadableStream returned by `b.bundle();` with vinyl file object
// so that we can use it down a vinyl pipeline
// while taking care of both streaming and buffered vinyl file objects
var browserified = transform(function(filename) {
// filename = './source/scripts/app.js' in this case
return browserify(filename)
.bundle();
});
return gulp.src(['./source/scripts/app.js']) // you can also use glob patterns here to browserify->uglify multiple files
.pipe(browserified)
.pipe(uglify())
.pipe(gulp.dest('./build/scripts'));
});
Ambas as receitas acima resultarão na mesma coisa.
É apenas sobre como você deseja gerenciar seus tubos (conversão entre streams NodeJS regulares e objetos de arquivo de vinil de streaming e objetos de arquivo de vinil em buffer)
Edit: Escrevi um artigo mais longo sobre o uso do gulp + browserify e diferentes abordagens em: https://medium.com/@sogko/gulp-browserify-the-gulp-y-way-bb359b3f9623