55 lines
1.3 KiB
JavaScript
55 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
var through2 = require('through2');
|
|
var sourcemaps = require('gulp-sourcemaps');
|
|
var duplexify = require('duplexify');
|
|
var sink = require('../sink');
|
|
var prepareWrite = require('../prepareWrite');
|
|
var writeContents = require('./writeContents');
|
|
|
|
function dest(outFolder, opt) {
|
|
if (!opt) {
|
|
opt = {};
|
|
}
|
|
|
|
function saveFile(file, enc, cb) {
|
|
prepareWrite(outFolder, file, opt, function(err, writePath) {
|
|
if (err) {
|
|
return cb(err);
|
|
}
|
|
writeContents(writePath, file, cb);
|
|
});
|
|
}
|
|
|
|
var saveStream = through2.obj(opt, saveFile);
|
|
if (!opt.sourcemaps) {
|
|
// Sink the save stream to start flowing
|
|
// Do this on nextTick, it will flow at slowest speed of piped streams
|
|
process.nextTick(sink(saveStream));
|
|
|
|
return saveStream;
|
|
}
|
|
|
|
var sourcemapOpt = opt.sourcemaps;
|
|
if (typeof sourcemapOpt === 'boolean') {
|
|
sourcemapOpt = {};
|
|
}
|
|
if (typeof sourcemapOpt === 'string') {
|
|
sourcemapOpt = {
|
|
path: sourcemapOpt,
|
|
};
|
|
}
|
|
|
|
var mapStream = sourcemaps.write(sourcemapOpt.path, sourcemapOpt);
|
|
var outputStream = duplexify.obj(mapStream, saveStream);
|
|
mapStream.pipe(saveStream);
|
|
|
|
// Sink the output stream to start flowing
|
|
// Do this on nextTick, it will flow at slowest speed of piped streams
|
|
process.nextTick(sink(outputStream));
|
|
|
|
return outputStream;
|
|
}
|
|
|
|
module.exports = dest;
|