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.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 に答える