gpt4 book ai didi

javascript - 如何在 Gulp 中使用 Browserify 丑化输出?

转载 作者:IT老高 更新时间:2023-10-28 21:47:15 24 4
gpt4 key购买 nike

我试图在 Gulp 中对 Browserify 的输出进行 uglify,但它不起作用。

gulpfile.js

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

gulp.task('browserify', function() {
return browserify('./source/scripts/app.js')
.bundle()
.pipe(source('bundle.js'))
.pipe(uglify()) // ???
.pipe(gulp.dest('./build/scripts'));
});

据我了解,我无法按照以下步骤进行操作。我需要在一个管道中制作以保留序列吗?

gulp.task('browserify', function() {
return browserify('./source/scripts/app.js')
.bundle()
.pipe(source('bundle.js'))
.pipe(uglify()) // ???
.pipe(gulp.dest('./source/scripts'));
});

gulp.task('scripts', function() {
return grunt.src('./source/scripts/budle.js')
.pipe(uglify())
.pipe(gulp.dest('./build/scripts'));
});

gulp.task('default', function(){
gulp.start('browserify', 'scripts');
});

最佳答案

实际上你已经很接近了,除了一件事:

  • 您需要将 source() 给出的 streaming 乙烯基文件对象转换为 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 代替它为您处理 streamingbuffered 乙烯基文件对象,例如所以

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 + browserify 和不同方法的更长的文章:https://medium.com/@sogko/gulp-browserify-the-gulp-y-way-bb359b3f9623

关于javascript - 如何在 Gulp 中使用 Browserify 丑化输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24992980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com