diff --git a/.changeset/sweet-keys-dress.md b/.changeset/sweet-keys-dress.md new file mode 100644 index 0000000000000..e931856a84e45 --- /dev/null +++ b/.changeset/sweet-keys-dress.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Updated the default [sucrase](https://github.com/alangpierce/sucrase)-based Jest transform to include inline source maps. diff --git a/packages/cli/config/jestSucraseTransform.js b/packages/cli/config/jestSucraseTransform.js index c88909d21fc26..65c71d7dafb73 100644 --- a/packages/cli/config/jestSucraseTransform.js +++ b/packages/cli/config/jestSucraseTransform.js @@ -46,11 +46,17 @@ function process(source, filePath) { } if (transforms) { - return transform(source, { + const { code, sourceMap: map } = transform(source, { transforms, filePath, disableESTransforms: true, - }).code; + sourceMapOptions: { + compiledFilename: filePath, + }, + }); + const b64 = Buffer.from(JSON.stringify(map), 'utf8').toString('base64'); + const suffix = `//# sourceMappingURL=data:application/json;charset=utf-8;base64,${b64}`; + return `${code}\n${suffix}`; } return source; @@ -64,6 +70,8 @@ function getCacheKey(sourceText) { .update(sucrasePkg.version) .update(Buffer.alloc(1)) .update(sucrasePluginPkg.version) + .update(Buffer.alloc(1)) + .update('1') // increment whenever the transform logic in this file changes .digest('hex'); }