You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte/test/sourcemaps/samples/attached-sourcemap/_config.js

38 lines
1.1 KiB

import MagicString from 'magic-string';
let indent_size = 4;
function get_processor(search, replace) {
return ({ content, filename }) => {
let code = content.slice();
const ms = new MagicString(code);
const idx = ms.original.indexOf(search);
if (idx == -1) throw new Error('search not found in src');
ms.overwrite(idx, idx + search.length, replace, { storeName: true });
// change line + column
const indent = Array.from({ length: indent_size }).join(' ');
ms.prependLeft(idx, '\n'+indent);
const map_opts = { source: filename, hires: true, includeContent: false };
const map = ms.generateMap(map_opts);
const attach_line = `\n/*# sourceMappingURL=${map.toUrl()} */`;
code = ms.toString() + attach_line;
indent_size += 2;
return { code };
};
}
export default {
preprocess: [
{ script: get_processor('replace_me_script', 'done_replace_script_1') },
{ script: get_processor('done_replace_script_1', 'done_replace_script_2') },
{ style: get_processor('.replace_me_style', '.done_replace_style_1') },
{ style: get_processor('.done_replace_style_1', '.done_replace_style_2') }
]
};