From 6ed4171dd4953da03be7f083b967f778909a768d Mon Sep 17 00:00:00 2001 From: David Festal Date: Wed, 29 May 2024 19:28:32 +0200 Subject: [PATCH] fix(cli): fix entrypoint validation on backstage 1.24.0 and above. (#1741) Signed-off-by: David Festal --- .../backend-embed-as-dependencies.ts | 42 ++++++++++++++----- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/packages/cli/src/commands/export-dynamic-plugin/backend-embed-as-dependencies.ts b/packages/cli/src/commands/export-dynamic-plugin/backend-embed-as-dependencies.ts index 15d53de2a8..1427f05320 100644 --- a/packages/cli/src/commands/export-dynamic-plugin/backend-embed-as-dependencies.ts +++ b/packages/cli/src/commands/export-dynamic-plugin/backend-embed-as-dependencies.ts @@ -796,21 +796,41 @@ function validatePluginEntryPoints(target: string): string { Task.log( ` adding typescript extension support to enable entry point validation`, ); - let tsNode: string | undefined; + + let nodeTransform: string | undefined; try { - tsNode = dynamicPluginRequire.resolve('ts-node'); + nodeTransform = dynamicPluginRequire.resolve( + '@backstage/cli/config/nodeTransform.cjs', + ); } catch (e) { - Task.log(` => unable to find 'ts-node' in the plugin context`); + Task.log( + ` => unable to find '@backstage/cli/config/nodeTransform.cjs' in the plugin context`, + ); } - if (tsNode) { - dynamicPluginRequire(tsNode).register({ - transpileOnly: true, - project: path.resolve(paths.targetRoot, 'tsconfig.json'), - compilerOptions: { - module: 'CommonJS', - }, - }); + if (nodeTransform) { + dynamicPluginRequire(nodeTransform); + } else { + Task.log( + ` => searching for 'ts-node' (legacy mode before backage 1.24.0)`, + ); + + let tsNode: string | undefined; + try { + tsNode = dynamicPluginRequire.resolve('ts-node'); + } catch (e) { + Task.log(` => unable to find 'ts-node' in the plugin context`); + } + + if (tsNode) { + dynamicPluginRequire(tsNode).register({ + transpileOnly: true, + project: path.resolve(paths.targetRoot, 'tsconfig.json'), + compilerOptions: { + module: 'CommonJS', + }, + }); + } } // Retry requiring the plugin main module after adding typescript extensions