1

我有一个简单的构建脚本,据说应该使用 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.');
}

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

4

1 回答 1

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);
});
于 2014-10-29T03:49:41.257 回答