From 67e233d8d726f790d2ab522a11521699809e7abb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leosvel=20P=C3=A9rez=20Espinosa?= Date: Thu, 5 May 2022 15:43:37 +0100 Subject: [PATCH] fix(react): remove collected dependency from module federation shared config when not found in package.json (#10157) --- .../src/module-federation/webpack-utils.ts | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/packages/react/src/module-federation/webpack-utils.ts b/packages/react/src/module-federation/webpack-utils.ts index 87cb79d8caa08..28519174aac9c 100644 --- a/packages/react/src/module-federation/webpack-utils.ts +++ b/packages/react/src/module-federation/webpack-utils.ts @@ -1,6 +1,6 @@ import { existsSync, readFileSync } from 'fs'; import { NormalModuleReplacementPlugin } from 'webpack'; -import { joinPathFragments, normalizePath, workspaceRoot } from '@nrwl/devkit'; +import { joinPathFragments, logger, workspaceRoot } from '@nrwl/devkit'; import { dirname, join, normalize } from 'path'; import { ParsedCommandLine } from 'typescript'; import { @@ -87,15 +87,26 @@ export function sharePackages( const pkgJson = JSON.parse(readFileSync(pkgJsonPath, 'utf-8')); - return packages.reduce( - (shared, pkgName) => ({ + return packages.reduce((shared, pkgName) => { + const version = + pkgJson.dependencies?.[pkgName] ?? pkgJson.devDependencies?.[pkgName]; + if (!version) { + logger.warn( + `Could not find a version for "${pkgName}" in the root "package.json" ` + + 'when collecting shared packages for the Module Federation setup. ' + + 'The package will not be shared.' + ); + + return shared; + } + + return { ...shared, [pkgName]: { singleton: true, strictVersion: true, - requiredVersion: pkgJson.dependencies[pkgName], + requiredVersion: version, }, - }), - {} - ); + }; + }, {}); }