From 565ff751b848fa48056c58d66c8604b80ad71e90 Mon Sep 17 00:00:00 2001 From: Vincenzo Scamporlino Date: Wed, 19 Jul 2023 11:59:47 +0200 Subject: [PATCH] cli: write module instead of using a virtual module Co-authored-by: Philipp Hugenroth Signed-off-by: Vincenzo Scamporlino --- packages/autodetect/src/index.ts | 7 ++++--- packages/cli/src/lib/bundler/config.ts | 23 ++++++++++++----------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/packages/autodetect/src/index.ts b/packages/autodetect/src/index.ts index b347a351da..490e6f25d7 100644 --- a/packages/autodetect/src/index.ts +++ b/packages/autodetect/src/index.ts @@ -34,9 +34,10 @@ type DetectedModule = { * @public */ function getAvailablePlugins(): DetectedPlugin[] { - const { modules } = __webpack_require__( - './node_modules/backstage-autodetected-plugins.js', - ) as { modules: DetectedModule[] }; + // eslint-disable-next-line @backstage/no-undeclared-imports + const { modules } = require('backstage-autodetected-plugins') as { + modules: DetectedModule[]; + }; return modules .map(splitPluginFromComponents) diff --git a/packages/cli/src/lib/bundler/config.ts b/packages/cli/src/lib/bundler/config.ts index e732377a4d..5e0176fae9 100644 --- a/packages/cli/src/lib/bundler/config.ts +++ b/packages/cli/src/lib/bundler/config.ts @@ -22,7 +22,6 @@ import ModuleScopePlugin from 'react-dev-utils/ModuleScopePlugin'; import { RunScriptWebpackPlugin } from 'run-script-webpack-plugin'; import webpack, { ProvidePlugin } from 'webpack'; import nodeExternals from 'webpack-node-externals'; -import VirtualModulesPlugin from 'webpack-virtual-modules'; import { isChildPath } from '@backstage/cli-common'; import { getPackages } from '@manypkg/get-packages'; import { optimization } from './optimization'; @@ -39,6 +38,7 @@ import ESLintPlugin from 'eslint-webpack-plugin'; import pickBy from 'lodash/pickBy'; import yn from 'yn'; import { readEntryPoints } from '../entryPoints'; +import path from 'path'; const BUILD_CACHE_ENV_VAR = 'BACKSTAGE_CLI_EXPERIMENTAL_BUILD_CACHE'; @@ -128,17 +128,18 @@ export async function createConfig( }), ); - if (extraPackages.length > 0) { - const requirePackageScript = extraPackages - ?.map(pkg => `{name: '${pkg}', module: require('${pkg}')}`) - .join(','); + const requirePackageScript = extraPackages + ?.map(pkg => `{name: '${pkg}', module: require('${pkg}')}`) + .join(','); - plugins.push( - new VirtualModulesPlugin({ - 'node_modules/backstage-autodetected-plugins.js': `module.exports = { modules: [${requirePackageScript}] };`, - }), - ); - } + await fs.writeFile( + path.join( + cliPaths.targetRoot, + 'node_modules', + 'backstage-autodetected-plugins.js', + ), + `module.exports = { modules: [${requirePackageScript}] };`, + ); const buildInfo = await readBuildInfo(); plugins.push(