browserify api 用于不带 gulp 的文件以在成功时触发回调

browserify api use to file without gulp to trigger callback on success

有人知道在 browserify 将输出写入磁盘后触发回调的方法吗?

var fs = require('fs');
var browserify = require('browserify');
var b = browserify({standalone: 'MyAppModules'});
b.add('./browserifyMain.js');
b.bundle().pipe(fs.createWriteStream(__dirname + '/public/js/bundle2.js'));

这行得通,但我只需要 运行 仅在构建捆绑包时进行 rsync。

我尝试添加一个 'on' 事件侦听器基于这个 post: How to use the new Browserify API?

var fs = require('fs');
var browserify = require('browserify');
var b = browserify({standalone: 'MyAppModules'});
b.add('./browserifyMain.js');
b.bundle().pipe(fs.createWriteStream(__dirname + '/public/js/bundle.js')).on('end', function(){
    console.log( 'finished writing the browserify file' );
});

但是日志永远不会返回,所以我假设这也不起作用:/

另外,试过了,也没有用:

var fs = require('fs');
var bundleFs = fs.createWriteStream(__dirname + '/public/js/bundle.js');
var browserify = require('browserify');
var b = browserify({standalone: 'MyAppModules'});
b.add('./browserifyMain.js');
b.bundle().pipe( bundleFs )
bundleFs.on('end', function(){
    console.log( 'finished writing the browserify file' );
});
return;

(以上所有内容都正确写入文件)

http://www.beingyesterday.com/write-browserify-to-file-using-the-api/

我找到了答案并添加到我的博客中...注意 "finish" 事件。这用于 quilk 中的 browserify 捆绑包,以便通过简单的 json 文件 https://johnc1984.github.io/quilk/Modules_baked_in/browserify_bundle.html

更轻松地进行控制
var fs = require('fs');
var browserify = require('browserify');

module.exports = function( callback ) {

    callback = callback || function(){};

    // Create a write stream for the pipe to output to
    var bundleFs = fs.createWriteStream(__dirname + '/public/browserify/bundle.js');

    var b = browserify({standalone: 'nodeModules'});
    b.add('./browserifyMain.js');
    b.bundle().pipe(bundleFs);

    //now listen out for the finish event to know when things have finished 
    bundleFs.on('finish', function () {
        console.log('finished writing the browserify file');
        return callback();
    });
};