diff --git a/src/compiler/compile/Component.ts b/src/compiler/compile/Component.ts index 202e14fd98..346c1a869b 100644 --- a/src/compiler/compile/Component.ts +++ b/src/compiler/compile/Component.ts @@ -342,22 +342,29 @@ export default class Component { css = compile_options.customElement ? { code: null, map: null } : result.css; + + const jsSourcemapEnabled = compile_options.enableSourcemap === true || compile_options.enableSourcemap === 'js' - const sourcemap_source_filename = get_sourcemap_source_filename(compile_options); + if (!jsSourcemapEnabled) { + js = print(program); + js.map = null; + } else { + const sourcemap_source_filename = get_sourcemap_source_filename(compile_options); - js = print(program, { - sourceMapSource: sourcemap_source_filename - }); + js = print(program, { + sourceMapSource: sourcemap_source_filename, + }); - js.map.sources = [ - sourcemap_source_filename - ]; + js.map.sources = [ + sourcemap_source_filename + ]; - js.map.sourcesContent = [ - this.source - ]; + js.map.sourcesContent = [ + this.source + ]; - js.map = apply_preprocessor_sourcemap(sourcemap_source_filename, 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 { diff --git a/src/compiler/compile/index.ts b/src/compiler/compile/index.ts index 96b24bceee..afe9c56cf4 100644 --- a/src/compiler/compile/index.ts +++ b/src/compiler/compile/index.ts @@ -13,6 +13,7 @@ const valid_options = [ 'name', 'filename', 'sourcemap', + 'enableSourcemap', 'generate', 'errorMode', 'varsReport', @@ -82,7 +83,7 @@ function validate_options(options: CompileOptions, warnings: Warning[]) { } export default function compile(source: string, options: CompileOptions = {}) { - options = Object.assign({ generate: 'dom', dev: false }, options); + options = Object.assign({ generate: 'dom', dev: false, enableSourcemap: true }, options); const stats = new Stats(); const warnings = []; diff --git a/src/compiler/compile/render_dom/index.ts b/src/compiler/compile/render_dom/index.ts index f74f4cdf1c..26f9ad9de3 100644 --- a/src/compiler/compile/render_dom/index.ts +++ b/src/compiler/compile/render_dom/index.ts @@ -33,10 +33,16 @@ export default function dom( } const css = component.stylesheet.render(options.filename, !options.customElement); + + const cssSourcemapEnabled = options.enableSourcemap === true || options.enableSourcemap === 'css'; - css.map = apply_preprocessor_sourcemap(options.filename, css.map, options.sourcemap as string | RawSourceMap | DecodedSourceMap); + if (cssSourcemapEnabled) { + css.map = apply_preprocessor_sourcemap(options.filename, css.map, options.sourcemap as string | RawSourceMap | DecodedSourceMap); + } else { + css.map = null; + } - const styles = component.stylesheet.has_styles && options.dev + const styles = cssSourcemapEnabled && component.stylesheet.has_styles && options.dev ? `${css.code}\n/*# sourceMappingURL=${css.map.toUrl()} */` : css.code; @@ -521,7 +527,7 @@ export default function dom( constructor(options) { super(); - ${css.code && b`this.shadowRoot.innerHTML = \`\`;`} + ${css.code && b`this.shadowRoot.innerHTML = \`\`;`} @init(this, { target: this.shadowRoot, props: ${init_props}, customElement: true }, ${definition}, ${has_create_fragment ? 'create_fragment' : 'null'}, ${not_equal}, ${prop_indexes}, null, ${dirty}); diff --git a/src/compiler/compile/render_ssr/index.ts b/src/compiler/compile/render_ssr/index.ts index b35a6ce6ff..e7ee9dfe5e 100644 --- a/src/compiler/compile/render_ssr/index.ts +++ b/src/compiler/compile/render_ssr/index.ts @@ -200,11 +200,13 @@ export default function ssr( main ].filter(Boolean); + const cssSourcemapEnabled = options.enableSourcemap === true || options.enableSourcemap === 'css'; + const js = b` ${css.code ? b` const #css = { code: "${css.code}", - map: ${css.map ? string_literal(css.map.toString()) : 'null'} + map: ${cssSourcemapEnabled && css.map ? string_literal(css.map.toString()) : 'null'} };` : null} ${component.extract_javascript(component.ast.module)} diff --git a/src/compiler/interfaces.ts b/src/compiler/interfaces.ts index 7446c4c14b..3b2f93278e 100644 --- a/src/compiler/interfaces.ts +++ b/src/compiler/interfaces.ts @@ -147,6 +147,7 @@ export interface CompileOptions { varsReport?: 'full' | 'strict' | false; sourcemap?: object | string; + enableSourcemap?: boolean | 'js' | 'css'; outputFilename?: string; cssOutputFilename?: string; sveltePath?: string;