Ответ 1
На самом деле вы довольно близко, за исключением одного:
- вам нужно преобразовать потоковый файл винилового файла, указанный
source()
сvinyl-buffer
, потому чтоgulp-uglify
(и большинство gulp плагинов) работает с буферизированным объекты виниловых файлов
Итак, у вас есть это вместо
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'));
});
Или вы можете вместо этого использовать vinyl-transform
, который позаботится о вас как для потоковых, так и для буферизированных объектов виниловых файлов, например
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'));
});
Оба вышеуказанных рецепта достигнут того же.
Его просто о том, как вы хотите управлять своими трубами (конвертирование между обычными потоками NodeJS и потоковыми файлами виниловых файлов и буферизованными файлами виниловых файлов)
Изменить: Я написал более длинную статью, касающуюся использования gulp + браузера и различных подходов: https://medium.com/@sogko/gulp-browserify-the-gulp-y-way-bb359b3f9623