Browserify缩小和连接文件

时间:2016-03-14 16:54:26

标签: javascript node.js browserify

我有一个纯粹基于网络的应用程序(即没有Node服务器),我希望能够为Web应用程序的每个页面捆绑所有JS文件和CSS文件。

我正在使用Gulp简单地将我的JS和CSS文件缩小并连接成一个捆绑包,但发现我提供文件的顺序随后被随机喷出(如果你问我,这是不可接受的)。我尝试了gulp-order和其他具有更多随机结果的流排序模块。

我想尝试browserify,但我被困在两件事上

  1. 使用browserify时是否需要module.exports?想想我的网络应用程序是非常基本的..它需要jQuery,bootstrap和我自己的库。没有必要以正确的顺序包含文件的复杂性
  2. 为什么当我尝试将browserify与构建文件一起使用而不是命令行时,它似乎尝试捆绑它需要的每一件东西?我只想将app.jsrequire()的内容捆绑到
  3. 例如

    var browserify = require('browserify');
    var fs = require('fs');
    var b = browserify();
    b.add('./app.js');
    b.transform({
        global: true
    }, 'uglifyify');
    
    b.bundle()
        .pipe(fs.createWriteStream('./bundle.js'));
    

    当我运行browserify build.js时,它可能会向stdout喷出100个文件。我试图复制运行browserify -g uglifyify app.js > bundle.js时发生的事情 - >这需要来自app.js的所有requires()并将其捆绑到一个新文件中。

1 个答案:

答案 0 :(得分:1)

  1. 如果您希望能够在应用程序的其他部分require使用您的模块/代码,则需要使用module.exports。否则你不需要导出任何东西。

  2. Browserify只捆绑所需的依赖项,但它也会递归执行此操作,这意味着如果您的应用程序需要库a和库a需要库b,那么browserify将捆绑您的代码,库a和库b。