Skip to content

Commit

Permalink
Trying to implement sourcemaps without vinyl-prepare
Browse files Browse the repository at this point in the history
  • Loading branch information
phated committed Apr 21, 2017
1 parent 263c2c9 commit 7c8eb07
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 22 deletions.
54 changes: 33 additions & 21 deletions lib/dest/index.js
@@ -1,22 +1,22 @@
'use strict';

var koalas = require('koalas');
var pumpify = require('pumpify');
var through2 = require('through2');
var sourcemaps = require('gulp-sourcemaps');
var duplexify = require('duplexify');
var vinylSourcemap = require('vinyl-sourcemap');
var valueOrFunction = require('value-or-function');

var sink = require('../sink');
var prepareWrite = require('../prepare-write');
var writeContents = require('./write-contents');

var boolOrString = valueOrFunction.bind(null, ['boolean', 'string']);

function dest(outFolder, opt) {
if (!opt) {
opt = {};
}

var sourcemapsOpt = valueOrFunction(
['boolean', 'string', 'object'], opt.sourcemaps);

function saveFile(file, enc, callback) {
prepareWrite(outFolder, file, opt, onPrepare);

Expand All @@ -28,26 +28,38 @@ function dest(outFolder, opt) {
}
}

var saveStream = through2.obj(opt, saveFile);
if (!sourcemapsOpt) {
// Sink the save stream to start flowing
// Do this on nextTick, it will flow at slowest speed of piped streams
process.nextTick(sink(saveStream));
function sourcemaps(file, enc, callback) {
var stream = this;
var sourcemapsOpt = koalas(boolOrString(opt.sourcemaps, file), false);

return saveStream;
}
if (!sourcemapsOpt) {
return callback(null, file);
}

var sourcemapsPath;
if (typeof sourcemapsOpt === 'string') {
sourcemapsPath = sourcemapsOpt;
}

if (typeof sourcemapsOpt === 'boolean') {
sourcemapsOpt = {};
} else if (typeof sourcemapsOpt === 'string') {
sourcemapsOpt = {
path: sourcemapsOpt,
};
vinylSourcemap.write(file, sourcemapsPath, onSourcemap);

function onSourcemap(err, uFile, smFile) {
if (err) {
return callback(err);
}

stream.push(uFile);
if (smFile) {
stream.push(smFile);
}

callback();
}
}

var mapStream = sourcemaps.write(sourcemapsOpt.path, sourcemapsOpt);
var outputStream = duplexify.obj(mapStream, saveStream);
mapStream.pipe(saveStream);
var saveStream = through2.obj(opt, saveFile);
var mapStream = through2.obj(sourcemaps);
var outputStream = pumpify.obj(mapStream, saveStream);

// Sink the output stream to start flowing
// Do this on nextTick, it will flow at slowest speed of piped streams
Expand Down
4 changes: 3 additions & 1 deletion package.json
Expand Up @@ -36,13 +36,15 @@
"lazystream": "^1.0.0",
"merge-stream": "^1.0.0",
"object-assign": "^4.0.0",
"pumpify": "^1.3.5",
"strip-bom": "^2.0.0",
"strip-bom-stream": "^1.0.0",
"through2": "^2.0.0",
"through2-filter": "^2.0.0",
"vali-date": "^1.0.0",
"value-or-function": "^1.2.0",
"vinyl": "^2.0.0"
"vinyl": "^2.0.0",
"vinyl-sourcemap": "gulpjs/vinyl-sourcemap"
},
"devDependencies": {
"del": "^2.2.0",
Expand Down

0 comments on commit 7c8eb07

Please sign in to comment.