使用Gulp和Browserify创建多个绑定文件

Browserify是一个Javascript的绑定工具,帮助我们理顺module之间的依赖关系。Gulp用来优化workflow。两者的共同点都是使用流,但在使用流方面也有不同之处:

  • Browserify只要接受文件内容即可
  • Gulp不但接受文件内容,还需要接受源文件信息,然后把源文件写到一个目标文件

Gulp在文件的写入写出过程中,需要Vinyl的帮助。Vinyl是一个虚拟的文件系统,当我们写 gulp.src('*.js')实际上是把硬盘上的文件放到了vinyl object中;当我们写 gulp.dest('somewhere')的时候,就是把vinyl object中的内容通过流写到硬盘上的somewhere文件夹中去。

使用Gulp和Browserify创建一个绑定文件

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

gulp.taks('browserify', function(){
    return browserify({entrieis:['path/main.js']})
        .bundle()
        .pipe(source(main.bundle.js))
        .pipe(gulp.dest('dist'));
});

使用Gulp和Browserify创建多个绑定文件

'use strict';

var gulp = require('gulp');
var source = require('vinyl-source-stream');
var rename = require('gulp-rename');
var browserify = require('browserify');
var es = require('event-stream');

gulp.taks('default', function(){
    //定义多个入口文件
    var entryFiles = [
        './app/main-a.js',
        './app/main-b.js'
    ];

    //遍历映射这些入口文件
    var tasks = entiryFiles.map(function(entry){
        return browserify({entries: [entry]})
            .bundle()
            .pipe(source(entry))
            .pipe(rename({
                extname: '.bundle.js'
            }))
            .pipe(gulp.dext('./dist'));
    });

    //创建一个合并流
    return es.merge.apply(null, tasks);
});

以上, 在定义入口文件的时候,这样写的好处是很具体,但如果有很多入口文件,是不是可以有一种更好的写法呢?

'use strict';

var gulp       = require('gulp'),
    source     = require('vinyl-source-stream'),
    rename     = require('gulp-rename'),
    browserify = require('browserify'),
    glob       = require('glob'),
    es         = require('event-stream');

gulp.task('default', function(done) {
    glob('./app/main-**.js', function(err, files) {
        if(err) done(err);

        var tasks = files.map(function(entry) {
            return browserify({ entries: [entry] })
                .bundle()
                .pipe(source(entry))
                .pipe(rename({
                    extname: '.bundle.js'
                }))
                .pipe(gulp.dest('./dist'));
            });
        es.merge(tasks).on('end', done);
    })
});

使用glob可以把符合条件的入口文件找出来。可见,通过gulp.task返回的还是一个流。

Original: https://www.cnblogs.com/darrenji/p/5492293.html
Author: Darren Ji
Title: 使用Gulp和Browserify创建多个绑定文件

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/551547/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Spark基本知识

    Spark基本知识 Spark 是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 Hadoop Hadoop 是由 java 语言编写的,在分布式服务器集群上存储海量数据并…

    技术杂谈 2023年7月11日
    0131
  • 区块链–构建于技术创新之上的理想国

    前言 作为最近最火热的热潮之一,区块链吸引了大众的眼球。不管是互联网从业人员、金融行业从业人员,还是投机者、传销者,都对区块链充满了好奇和期待,寄希望于通过区块链创造财富和价值。那…

    技术杂谈 2023年7月23日
    097
  • [转] 彻底搞懂word-break、word-wrap、white-space

    white-space、word-break、word-wrap(overflow-wrap)估计是css里最基本又最让人迷惑的三个属性了,我也是用了n次都经常搞混,必须系统整理一…

    技术杂谈 2023年5月31日
    0121
  • 《码出高效》Chapter2面向对象-读书笔记

    《码出高效Java开发手册》第2章 面向对象 面向对象的抽象、封装、继承、多态的理念,使企业应用大规模化成为可能,有效地降低了软件开发成本、维护成本和复用成本。OOP实践了软件工程…

    技术杂谈 2023年7月10日
    087
  • 浅谈在线文档的那些事儿

    前言 对前端来说开发一个在线文档需要啥技术呢?想一下,开发一个在线文档我们可能要解决的问题: 最基础的文本编辑功能(哦?好像textarea就可以完成,那如果是富文本呢?)我们需要…

    技术杂谈 2023年5月31日
    095
  • Java开发环境搭建

    ; ; Java开发环境搭建 JDK下载安装 配置环境变量 JDK目录介绍 Hello world及简单语法介绍 Notepad++安装及使用 如何卸载JDK 找到JDK安装目录 …

    技术杂谈 2023年6月21日
    0126
  • 57_scala中的import

    1 posted @2022-07-06 12:25 学而不思则罔! 阅读(5 ) 评论() 编辑 Original: https://www.cnblogs.com/bajiao…

    技术杂谈 2023年7月10日
    0118
  • JAVA抓取百度热搜榜实时数据

    背景:[JAVA]前几天面试超碧,聊到其接触的项目,有抓取各类排行的实时数据,进行多国语言翻译,抓取目前比较火的语言是php、go,由于目前工作使用JAVA,因此也模拟实现了一下抓…

    技术杂谈 2023年7月24日
    0106
  • 关于博客园设置awescnb皮肤教程

    第一步:申请博客园 申请博客园,然后再申请js权限 第二步:设置博客园 页面定制勾选禁止模版使用css 页面定制css代码 .profile-menu{ display: none…

    技术杂谈 2023年7月25日
    0107
  • python爬虫学习-爬取某个网站上的所有图片

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    技术杂谈 2023年6月21日
    0106
  • idea启动 org.springframework.boot.web.server.PortInUseException: Port XXX is already in use

    win+r,输入cmd,进入命令行窗口查询占用端口号所在进程:netstat -ano|findstr 8001杀死进程:taskkill -f -pid 进程号 作者:crazy…

    技术杂谈 2023年7月24日
    090
  • html大文件传输思路

    需求: 项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在20G内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以20G来进行限制。 PC端全平台支持,…

    技术杂谈 2023年5月30日
    0135
  • 最新资讯|2022年8月29日,IECEE发布电池认证CTL协议DSH1037A!

    2022年8月29日,IECEE发布电池认证CTL协议DSH 1037A,涉及标准IEC 62133:2002 ,IEC 62133:2012,IEC 62133-1:2017,I…

    技术杂谈 2023年6月22日
    0110
  • 云原生技术持久化存储PV与PVC

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    技术杂谈 2023年5月31日
    0127
  • 长短时记忆网络 LSTM

    3. 从公式层面理解LSTM 前边我们从宏观上解释了LSTM是如何工作的,接下来我深入到LSTM单元内部进行介绍,看看它是如何保持数据的长期依赖的。我们先来看下LSTM单元内部是什…

    技术杂谈 2023年7月11日
    088
  • 11-K8S部署普罗米修斯

    K8S-Kubernetes 集群部署 Prometheus 和 Grafana 1.实验环境 控制节点/master01 192.168.80.20 工作节点/node01 19…

    技术杂谈 2023年7月10日
    0122
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球