From fec2c41580f9041fcc7d370e249b2bbecf6e5e43 Mon Sep 17 00:00:00 2001 From: Damir Murat Date: Fri, 31 Mar 2017 23:56:48 +0200 Subject: [PATCH] Use correct babel options for input source maps. When there is no input source map, support generating a sourcemaps by letting a user to specify Babel sourceMaps option. It can be truthy value, 'inline' string or 'both' string, but it has to be specified by the user. --- index.js | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/index.js b/index.js index 73b2806..5ab9f2f 100644 --- a/index.js +++ b/index.js @@ -26,19 +26,32 @@ module.exports = function (opts) { } try { - var fileOpts = objectAssign({}, opts, { + var isInputSourceMapPresent = Boolean(file.sourceMap); + var defaultOpts = { filename: file.path, - filenameRelative: file.relative, - sourceMap: Boolean(file.sourceMap), - sourceFileName: file.relative, - sourceMapTarget: file.relative - }); + filenameRelative: file.relative + }; + + if (isInputSourceMapPresent) { + defaultOpts.inputSourceMap = file.sourceMap; + } + else { + defaultOpts.sourceFileName = file.relative; + defaultOpts.sourceMapTarget = file.relative; + } + + var fileOpts = objectAssign({}, opts, defaultOpts); var res = babel.transform(file.contents.toString(), fileOpts); if (file.sourceMap && res.map) { - res.map.file = replaceExtension(res.map.file); - applySourceMap(file, res.map); + if (isInputSourceMapPresent) { + file.sourceMap = res.map; + } + else { + res.map.file = replaceExtension(res.map.file); + applySourceMap(file, res.map); + } } if (!res.ignored) {