2016-03-25 3 views
0

私はGulpを使用していますが、ソースを書き込む前にディレクトリのすべての内容を削除/ "クリーン"したいと思います。Node.js streams =>フォルダに移動する前の内容を削除する

削除操作を実行するストリームを、読み取り/変換/書き込み操作を行うストリームに接続する方法はありますか?問題は、これが動作するようには思えないということである

function transpileJSX() { 

    var d = domain.create(); 

    d.run(function() { 
     gulp.src('./public/static/app/js/views/**/*.js').pipe(react({harmony: true})) 
      .pipe(gulp.dest('./public/static/app/js/jsx')).on('end', function() { 
      d.emit('end'); 
      d.exit(); 
     }); 
    }); 

    return d; 


} 

function deleteJSX() { 
    return gulp.src('./public/static/app/js/jsx/**/*.js') 
     .pipe(clean({force: true})); 
} 


gulp.task('transpile-jsx', function() { 
    return transpileJSX().on('error', function (err) { 
     console.error(err); 
    }); 
}); 

gulp.task('delete-jsx', function (cb) { 
    return deleteJSX(); 
}); 

deleteJSX().pipe(transpileJSX()); 

transpileJSX操作がdeleteJSX操作が始まる前に開始しているようだ

今、私はこれを持っています。それはストリームになると予想されるかもしれません。しかし、削除操作全体が最初に完了するようにして、すべてが適切に機能するようにしたいと思うのですか?例えば

、私はこれを行う場合:

gulp.task('some-task', ['delete-jsx','transpile-jsx'], function (done) { 

    someTask(done); 

}); 

ログは削除-JSXのタスクが終了する前にtranspile-JSXタスクが開始されることを示して一息。

誰かがそれに移動する前にフォルダをクリーニングするときに使用するパターンがある場合は、私はそれをコピーしたいと思います!

答えて

1

あなたはすでにほとんど存在しています。あなただけの一気の最大同時実行のためのタスクを実行するので、タスクの依存関係を再配置する必要があります。

gulp.task('transpile-jsx', ['delete-jsx'], function() { 
    //... 
}); 

gulp.task('some-task', ['transpile-jsx'], function() { 
    //... 
}); 

これはがぶ飲み4安打一度容易になります。そこにあなたのようなものを書くことができるでしょう:

gulp.task('some-task', gulp.series('delete-jsx', 'transpile-jsx', function() { 
    //... 
})); 
+0

ありがとう、これは意味がある!あなたはギャルプ4がリリースされる時を知っていますか? –

+1

[いくつかの顕著な変更点](https://github.com/gulpjs/gulp/issues/1486)のため、[due date](https://github.com/gulpjs/gulp/milestones)はまだ設定されていません。しかし、あなたがそれを試したいならば、あなたは[現在の開発版をインストールする]ことができます(http://blog.reactandbethankful.com/posts/2015/05/01/how-to-install-gulp-4/)。私はそれを持って遊んできましたが、まだ問題は発生していませんが、YMMV。 –

関連する問題