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

2024-03-01

我尝试在 Gulp 中丑化 Browserify 的输出,但它不起作用。

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() with vinyl-buffer因为gulp-uglify(和大多数 gulp 插件)适用于buffered乙烯基文件对象

所以你可以用这个代替

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相反,它同时照顾两者流媒体 and buffered为您提供乙烯基文件对象,就像这样

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 Streams 和流式乙烯基文件对象和缓冲乙烯基文件对象之间转换)

编辑: 我写了一篇关于使用 gulp + browserify 和不同方法的较长文章:https://medium.com/@sogko/gulp-browserify-the-gulp-y-way-bb359b3f9623 https://medium.com/@sogko/gulp-browserify-the-gulp-y-way-bb359b3f9623

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Gulp 中使用 Browserify 丑化输出? 的相关文章

随机推荐

  • 为什么 const 左值引用可以引用可变右值引用?

    在 C 11 中 可以使用可变右值引用来初始化 const 左值引用 然后 右值引用的值可以发生变化 产生 const 左值引用的可见突变 这是一个例子 int rval 3 const int lval rval cout lt lt l
  • DbSet 在 EF7 中没有 Find 方法

    我正在尝试创建一个通用存储库来访问我的数据库 在 EF6 中 我能够这样做以获得特定的实体 protected IDbSet
  • R:合并具有相同ID的行[重复]

    这个问题在这里已经有答案了 Edit 我将 Var4 更改为字符串值 因为我的问题对我的数据不够精确 因此由于类型无效 答案失败 对此感到抱歉 这是我的第一个问题 我希望有人可以帮助我 我有以下数据集 ID Date N Date Var1
  • 在列表中查找一个值[重复]

    这个问题在这里已经有答案了 我使用以下命令来检查是否item is in my list if item in my list print Desired item is in list Is if item in my list 在列表中
  • 与 Vuex-ORM 的两种方式数据绑定

    有谁知道使用时在表单中实现双向数据绑定的库或已经描述的模式Vuex ORM https vuex orm github io vuex orm 我找到了几个可以帮助解决 Vuex 问题的库 但还没有专门针对 Vuex ORM 的库 vuex
  • 如何在 Java 中使用 servlet 过滤器来更改传入的 servlet 请求 url?

    如何使用 servlet 过滤器更改传入的 servlet 请求 url http nm java appspot com Check License Dir My App Dir ABC My Obj 123 to http nm jav
  • 使用spring-amqp和rabbitmq实现带退避的非阻塞重试

    我正在寻找一种使用 spring amqp 和 Rabbit MQ 的退避策略来实现重试的好方法 但要求是侦听器不应被阻止 因此可以自由地处理其他消息 我在这里看到了类似的问题 但它不包括 后退 的解决方案 RabbitMQ 和 Sprin
  • Kohana 3 分页

    我真的不知道 Kohana 3 中的分页是如何工作的 Kohana 3 中是否有一个很好的分页示例 Get the total count of articles count this gt profil gt articles gt co
  • 如何检测窗口是否闪烁

    当需要吸引用户注意时 我使用 FlashWindowEx 来闪烁应用程序窗口 窗口标题和任务栏按钮持续闪烁 直到应用程序获得焦点 如何检查应用程序当前是否正在闪烁 即 自从指示其闪烁以来尚未获得焦点 这里有两种可能的解决方案 一种使用 WH
  • 使用退格键删除整个 Spannable

    我有一个聊天应用程序 可以在文本中添加表情符号 我有一个问题EditText场地 表情符号图像显示出来 但如果我按普通键盘上的退格按钮 我要更改为表情符号图片的文本就会显示出来 我必须删除几个字符 直到图片消失 我在用Spannable去做
  • Rails,每当和 docker - cron 任务不运行

    我的定时任务来自schedule rb不适用于 docker 容器 但是crontab l结果已经包含这一行 Begin Whenever generated tasks for app config schedule rb 45 19 b
  • WebStorm 中的 Velocity 语法高亮显示

    WebStorm 中有 Velocity 语法的插件 下载吗 我碰到这个帖子 http wiki apache org velocity IntelliJSyntaxHighlighting但没有目录filetypes在我的道路上 对于Ma
  • spring-kafka AckMode 中的 MANUAL 和 MANUAL_IMMEDIATE 有什么区别

    从 spring docs 中 我可以看到 MANUAL 消息监听器负责acknowledge 确认 之后 应用与 BATCH 相同的语义 手动 立即 当侦听器调用 Acknowledgment acknowledge 方法时立即提交偏移量
  • jQuery UI 显示/隐藏幻灯片效果 - 如何更改幻灯片“后退”速度

    我的页面包含许多 OL 列表 每个列表都显示精选的链接 单击每个链接时 内容会滑出到右侧 单击每个链接时 内容会滑入 然后再次滑出 这是一个小提琴 展示了这一点 http jsfiddle net juxprose xu3ck 15 htt
  • htaccess 无提示重定向到子目录:当没有尾随“/”时显示子目录

    我在 Google 和 StackOverflow 上四处搜寻 试图找出我的问题 尝试了无数的解决方案 但没有一个完全奏效 我希望将服务器上主域的 Web 根目录移动到子目录 我目前拥有的 Web 根目录的服务器路径 home user p
  • 尝试使鼠标光标在硒测试用例中可见

    我在 chromedriver 上使用 Java 中的 Selenium Webdriver 并尝试在执行测试用例时永久显示光标 我尝试过机器人和动作课 但没有成功 例如我尝试过这个 Actions builder new Actions
  • Docker 开发环境中的丰富编辑器

    所以我和我的团队已经购买了 Docker 它对于部署和测试来说非常棒 我真正的问题是如何建立良好的开发人员体验 特别是围绕编写 Python 应用程序 但这个问题可以推广到 Nodejs Java 等 问题 在编写 Python 应用程序时
  • IE 中奇怪的滚动行为,带有可滚动 div 中的复选框

    我有一个 多选 控件 如下所示 抱歉 ID 名称很长 它们是自动生成的 因为整个事情是由自定义标记生成的 div class default skin outer div class default control span class d
  • 具有自定义帖子类型和自定义分类的 WordPress 固定链接

    我有一个名为 产品 的自定义帖子类型和一个名为 product types 的产品自定义分类法 它是分层的 因此其中有子类别 我希望永久链接显示为http mysite com product type sub category postn
  • 如何在 Gulp 中使用 Browserify 丑化输出?

    我尝试在 Gulp 中丑化 Browserify 的输出 但它不起作用 gulpfile js var browserify require browserify var gulp require gulp var uglify requi