index.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. 'use strict';
  2. var through2 = require('through2');
  3. var sourcemaps = require('gulp-sourcemaps');
  4. var duplexify = require('duplexify');
  5. var sink = require('../sink');
  6. var prepareWrite = require('../prepareWrite');
  7. var writeContents = require('./writeContents');
  8. function dest(outFolder, opt) {
  9. if (!opt) {
  10. opt = {};
  11. }
  12. function saveFile(file, enc, cb) {
  13. prepareWrite(outFolder, file, opt, function(err, writePath) {
  14. if (err) {
  15. return cb(err);
  16. }
  17. writeContents(writePath, file, cb);
  18. });
  19. }
  20. var saveStream = through2.obj(opt, saveFile);
  21. if (!opt.sourcemaps) {
  22. // Sink the save stream to start flowing
  23. // Do this on nextTick, it will flow at slowest speed of piped streams
  24. process.nextTick(sink(saveStream));
  25. return saveStream;
  26. }
  27. var sourcemapOpt = opt.sourcemaps;
  28. if (typeof sourcemapOpt === 'boolean') {
  29. sourcemapOpt = {};
  30. }
  31. if (typeof sourcemapOpt === 'string') {
  32. sourcemapOpt = {
  33. path: sourcemapOpt,
  34. };
  35. }
  36. var mapStream = sourcemaps.write(sourcemapOpt.path, sourcemapOpt);
  37. var outputStream = duplexify.obj(mapStream, saveStream);
  38. mapStream.pipe(saveStream);
  39. // Sink the output stream to start flowing
  40. // Do this on nextTick, it will flow at slowest speed of piped streams
  41. process.nextTick(sink(outputStream));
  42. return outputStream;
  43. }
  44. module.exports = dest;