我有一个简单的构建脚本,据说应该使用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.');
}
但是当我运行它时,我得到一个完全空的文件。知道为什么吗?
答案 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);
});