From d1d6d123207e3183587a03497478e3d937f7b6f4 Mon Sep 17 00:00:00 2001 From: Zack Jackson <25274700+ScriptedAlchemy@users.noreply.github.com> Date: Fri, 19 Sep 2025 23:50:03 -0700 Subject: [PATCH] Ensure shared context library is shared as singleton --- shared-context/app1/webpack.config.js | 25 ++++++++++++++++--------- shared-context/app2/webpack.config.js | 25 ++++++++++++++++--------- 2 files changed, 32 insertions(+), 18 deletions(-) diff --git a/shared-context/app1/webpack.config.js b/shared-context/app1/webpack.config.js index f356b05209e..e263aa5a6a9 100644 --- a/shared-context/app1/webpack.config.js +++ b/shared-context/app1/webpack.config.js @@ -2,6 +2,8 @@ const HtmlWebpackPlugin = require('html-webpack-plugin'); const ModuleFederationPlugin = require('webpack').container.ModuleFederationPlugin; const path = require('path'); +const deps = require('./package.json').dependencies; + module.exports = { entry: './src/index', mode: 'development', @@ -42,16 +44,21 @@ module.exports = { remotes: { app2: 'app2@http://localhost:3002/remoteEntry.js', }, - shared: [ - 'react', - 'react-dom', - { - 'shared-context_shared-library': { - import: 'shared-context_shared-library', - requiredVersion: require('../shared-library/package.json').version, - }, + shared: { + react: { + singleton: true, + requiredVersion: deps.react, + }, + 'react-dom': { + singleton: true, + requiredVersion: deps['react-dom'], }, - ], + 'shared-context_shared-library': { + import: 'shared-context_shared-library', + requiredVersion: require('../shared-library/package.json').version, + singleton: true, + }, + }, }), new HtmlWebpackPlugin({ template: './public/index.html', diff --git a/shared-context/app2/webpack.config.js b/shared-context/app2/webpack.config.js index 522033b6180..5cfaadc7d4d 100644 --- a/shared-context/app2/webpack.config.js +++ b/shared-context/app2/webpack.config.js @@ -2,6 +2,8 @@ const HtmlWebpackPlugin = require('html-webpack-plugin'); const ModuleFederationPlugin = require('webpack').container.ModuleFederationPlugin; const path = require('path'); +const deps = require('./package.json').dependencies; + module.exports = { entry: './src/index', mode: 'development', @@ -43,16 +45,21 @@ module.exports = { exposes: { './Welcome': './src/Welcome', }, - shared: [ - 'react', - 'react-dom', - { - 'shared-context_shared-library': { - import: 'shared-context_shared-library', - requiredVersion: require('../shared-library/package.json').version, - }, + shared: { + react: { + singleton: true, + requiredVersion: deps.react, + }, + 'react-dom': { + singleton: true, + requiredVersion: deps['react-dom'], }, - ], + 'shared-context_shared-library': { + import: 'shared-context_shared-library', + requiredVersion: require('../shared-library/package.json').version, + singleton: true, + }, + }, }), new HtmlWebpackPlugin({ template: './public/index.html',