From 74c1239b7b6b2ff8fdb8521ab12ba9d2a3c9d6aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9e=20Kooi?= Date: Fri, 20 Apr 2018 11:32:47 +0200 Subject: [PATCH] Fix default sourceFileName. This deals with a problem mentioned in [babel/babelify#255][0]. I'm not super sure about the implications, but it seems this may have been a regression from Babel 6. In babel@6, the default `sourceFileName` was the basename of the input file: ```js require('babel-core').transform('var a = 10', { filename: __filename, sourceMaps: true }).map // { version: 3, // sources: [ 'index.js' ], // names: [ 'a' ], // mappings: 'AAAA,IAAIA,IAAI,EAAR', // file: 'index.js', // sourcesContent: [ 'var a = 10' ] } } ``` Currently however, the full file path is used: ```js require('@babel/core').transformSync('var a = 10', { filename: __filename, sourceMaps: true }).map // { version: 3, // sources: [ '/home/goto-bus-stop/Code/babel/repro-babelify-255/index.js' ], // names: [ 'a' ], // mappings: 'AAAA,IAAIA,IAAI,EAAR', // file: '/home/goto-bus-stop/Code/babel/repro-babelify-255/index.js', // sourcesContent: [ 'var a = 10' ] } } ``` This patch adds the `path.basename()` call that [Babel 6 used][1] to @babel/core's default options, so it's the same as back then. ```js require('../babel/packages/babel-core').transform('var a = 10', { filename: __filename, sourceMaps: true }).map // { version: 3, // sources: [ 'index.js' ], // names: [ 'a' ], // mappings: 'AAAA,IAAIA,IAAI,EAAR', // sourcesContent: [ 'var a = 10' ] } ``` This is the desired behaviour for browserify at least, as it expects relative paths in the source maps and rebases them to a root directory when generating the final source map. [0]: https://github.com/babel/babelify/pull/255 [1]: https://github.com/babel/babel/blob/6689d2d23cdb607c326ed5a06855bfb84c050c56/packages/babel-core/src/transformation/file/index.js#L163-L172 --- packages/babel-core/src/transformation/normalize-opts.js | 2 +- packages/babel-core/test/api.js | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/babel-core/src/transformation/normalize-opts.js b/packages/babel-core/src/transformation/normalize-opts.js index 6cd0f32447f1..16690f01d544 100644 --- a/packages/babel-core/src/transformation/normalize-opts.js +++ b/packages/babel-core/src/transformation/normalize-opts.js @@ -14,7 +14,7 @@ export default function normalizeOptions(config: ResolvedConfig): {} { moduleRoot, sourceRoot = moduleRoot, - sourceFileName = filenameRelative, + sourceFileName = path.basename(filenameRelative), comments = true, compact = "auto", diff --git a/packages/babel-core/test/api.js b/packages/babel-core/test/api.js index 101a184089c9..4bb3d0f4058e 100644 --- a/packages/babel-core/test/api.js +++ b/packages/babel-core/test/api.js @@ -393,6 +393,15 @@ describe("api", function() { }); }); + it("default source map filename", function() { + return transformAsync("var a = 10;", { + filename: "/some/absolute/file/path.js", + sourceMaps: true, + }).then(function(result) { + expect(result.map.sources).toEqual(["path.js"]); + }); + }); + it("code option false", function() { return transformAsync("foo('bar');", { code: false }).then(function( result,