From c0c51c97101a3003357e61d86092ceb974ea018e Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 19 Aug 2021 17:46:43 +0200 Subject: [PATCH] cli: disable sucrase ES transforms Signed-off-by: Patrik Oldsberg --- .changeset/mighty-needles-know.md | 5 +++++ packages/cli/config/tsconfig.json | 3 ++- packages/cli/src/lib/bundler/transforms.ts | 3 +++ 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 .changeset/mighty-needles-know.md diff --git a/.changeset/mighty-needles-know.md b/.changeset/mighty-needles-know.md new file mode 100644 index 0000000000..7e69a53678 --- /dev/null +++ b/.changeset/mighty-needles-know.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Disabled ECMAScript transforms in app and backend builds in order to reduce bundle size and runtime performance. For the rationale and a full list of syntax that is no longer transformed, see https://github.com/alangpierce/sucrase#transforms. This also enables TypeScripts `useDefineForClassFields` flag by default, which in rare occasions could cause build failures. For instructions on how to mitigate issues due to the flag, see the [TypeScript documentation](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#the-usedefineforclassfields-flag-and-the-declare-property-modifier). diff --git a/packages/cli/config/tsconfig.json b/packages/cli/config/tsconfig.json index f6b4f65edd..33a8b0a9bd 100644 --- a/packages/cli/config/tsconfig.json +++ b/packages/cli/config/tsconfig.json @@ -33,6 +33,7 @@ "strictPropertyInitialization": true, "stripInternal": true, "target": "ES2019", - "types": ["node", "jest", "webpack-env"] + "types": ["node", "jest", "webpack-env"], + "useDefineForClassFields": true } } diff --git a/packages/cli/src/lib/bundler/transforms.ts b/packages/cli/src/lib/bundler/transforms.ts index 56162acf4b..cf9e873a66 100644 --- a/packages/cli/src/lib/bundler/transforms.ts +++ b/packages/cli/src/lib/bundler/transforms.ts @@ -39,6 +39,7 @@ export const transforms = (options: TransformOptions): Transforms => { loader: require.resolve('@sucrase/webpack-loader'), options: { transforms: ['typescript', 'jsx', ...extraTransforms], + disableESTransforms: true, production: !isDev, }, }, @@ -48,6 +49,7 @@ export const transforms = (options: TransformOptions): Transforms => { loader: require.resolve('@sucrase/webpack-loader'), options: { transforms: ['jsx', ...extraTransforms], + disableESTransforms: true, production: !isDev, }, }, @@ -64,6 +66,7 @@ export const transforms = (options: TransformOptions): Transforms => { loader: require.resolve('@sucrase/webpack-loader'), options: { transforms: ['jsx', ...extraTransforms], + disableESTransforms: true, production: !isDev, }, },