De hecho, te acercaste bastante, excepto por una cosa:
- es necesario convertir la transmisión de archivos de vinilo objeto dado por
source()
la vinyl-buffer
causa gulp-uglify
(y la mayoría de los plugins trago) funciona para el buffer objetos de archivo de vinilo
Entonces tendrías esto en su lugar
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'));
});
O bien, puede optar por utilizar vinyl-transform
en su lugar, que se encarga de la transmisión y los objetos de archivo de vinilo almacenados en búfer por usted, como tal
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 recetas anteriores lograrán lo mismo.
Se trata simplemente de cómo desea administrar sus tuberías (convertir entre secuencias NodeJS normales y objetos de archivo de vinilo en tiempo real y objetos de archivo de vinilo en búfer)
Editar: he escrito un artículo más largo sobre el uso de gulp + browserify y diferentes enfoques en: https://medium.com/@sogko/gulp-browserify-the-gulp-y-way-bb359b3f9623
gulp-concat
y agregarlo al final de su canalización de gulp. Eso será el equivalente a correrbrowserify <options> > single-file.js
en la terminal. Avísame si he respondido a tu pregunta. ¡Salud!vinyl-transform
ya no funciona, ¿eh?Dos enfoques adicionales, tomados de la página de NPM de flujo de fuente de vinilo :
Dado:
Enfoque 1
Uso de gulpify(obsoleto)Método 2 Uso de flujo de fuente de vinilo
Un beneficio del segundo enfoque es que utiliza la API de Browserify directamente, lo que significa que no tiene que esperar a que los autores de gulpify actualicen la biblioteca antes de poder hacerlo.
fuente
puede intentar transformar browserify uglifyify .
fuente