From be5215588cc73d677e1d28f9c05b0ed455ebcabd Mon Sep 17 00:00:00 2001 From: dominikg Date: Fri, 30 Jul 2021 17:56:27 +0200 Subject: [PATCH] [fix] use consistent relative source filename for js sourcemaps --- src/compiler/compile/Component.ts | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/compiler/compile/Component.ts b/src/compiler/compile/Component.ts index 6a8d5b178e..1ac7f21191 100644 --- a/src/compiler/compile/Component.ts +++ b/src/compiler/compile/Component.ts @@ -343,19 +343,21 @@ export default class Component { ? { code: null, map: null } : result.css; + const sourcemap_source_filename = get_sourcemap_source_filename(compile_options); + js = print(program, { - sourceMapSource: compile_options.filename + sourceMapSource: sourcemap_source_filename }); js.map.sources = [ - compile_options.filename ? get_relative_path(compile_options.outputFilename || '', compile_options.filename) : null + sourcemap_source_filename ]; js.map.sourcesContent = [ this.source ]; - js.map = apply_preprocessor_sourcemap(this.file, js.map, compile_options.sourcemap as (string | RawSourceMap | DecodedSourceMap)); + js.map = apply_preprocessor_sourcemap(sourcemap_source_filename, js.map, compile_options.sourcemap as (string | RawSourceMap | DecodedSourceMap)); } return { @@ -1551,3 +1553,18 @@ function get_relative_path(from: string, to: string) { return from_parts.concat(to_parts).join('/'); } + +function get_basename(filename: string) { + return filename.split(/[/\\]/).pop(); +} + +function get_sourcemap_source_filename(compile_options: CompileOptions) { + if (compile_options.filename) { + if (compile_options.outputFilename) { + return get_relative_path(compile_options.outputFilename, compile_options.filename); + } else { + return get_basename(compile_options.filename); + } + } + return null; +}