cli: write module instead of using a virtual module

Co-authored-by: Philipp Hugenroth <philipph@spotify.com>
Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>
This commit is contained in:
Vincenzo Scamporlino
2023-07-19 11:59:47 +02:00
committed by Patrik Oldsberg
parent 6692f99f87
commit 565ff751b8
2 changed files with 16 additions and 14 deletions
+4 -3
View File
@@ -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)
+12 -11
View File
@@ -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(