使用Browserify构建脚本会创建一个空文件

时间:2014-01-28 12:04:38

标签: javascript node.js browserify

我有一个简单的构建脚本,据说应该使用browserify将我的所有js模块打包到一个文件中。我有以下代码(灵感来自http://www.forbeslindesay.co.uk/post/46324645400/standalone-browserify-builds

function _browserify(srcPath, distPath) {
  var browserify = require('browserify');
  var b = new browserify();
  b.add(srcPath);
  b.bundle().pipe(_fs.createWriteStream(distPath));
  console.log(' '+ distPath +' built.');
}

但是当我运行它时,我得到一个完全空的文件。知道为什么吗?

1 个答案:

答案 0 :(得分:2)

好吧,我晚上肯定花了很多时间,但事实证明这是一个异步问题。你很可能在某处遇到错误,但是在错误回调有机会被调用之前,grunt正在杀死进程。 grunt为每个任务的上下文提供了一个漂亮的异步方法,你必须使用它来让grunt知道这是一个异步任务(因此需要等待所有内容都完成)。类似......

grunt.registerTask('build', function () {
    var done = this.async();

    browserify({ debug: true })
        .add('./src/main.js')
        .bundle()
        .on('error', function (err) {
            console.log(err);
        })
        .pipe(fs.createWriteStream('./target/bundle.js')
        .on('end', done);
});