From 67ff9a0b086425134984d926c1f6a6545319cbb3 Mon Sep 17 00:00:00 2001 From: fi3ework Date: Fri, 21 Nov 2025 16:29:21 +0800 Subject: [PATCH] fix: prefer use `stroybook/internal/node-logger` as logger --- .changeset/dry-colts-cough.md | 5 +++++ .../storybook-addon/src/lib/storybook-addon.ts | 18 +++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 .changeset/dry-colts-cough.md diff --git a/.changeset/dry-colts-cough.md b/.changeset/dry-colts-cough.md new file mode 100644 index 00000000000..604459220c9 --- /dev/null +++ b/.changeset/dry-colts-cough.md @@ -0,0 +1,5 @@ +--- +'@module-federation/storybook-addon': patch +--- + +prefer use `stroybook/internal/node-logger` as logger diff --git a/packages/storybook-addon/src/lib/storybook-addon.ts b/packages/storybook-addon/src/lib/storybook-addon.ts index 951a4c5fd97..703d210dc43 100644 --- a/packages/storybook-addon/src/lib/storybook-addon.ts +++ b/packages/storybook-addon/src/lib/storybook-addon.ts @@ -7,11 +7,24 @@ import { type Configuration, type WebpackPluginInstance, } from 'webpack'; -import { logger } from '@storybook/node-logger'; import { normalizeStories } from '@storybook/core/common'; import withModuleFederation from '../utils/with-module-federation.js'; import { correctImportPath } from '../utils/correctImportPath.js'; +// TODO: Only reserve `storybook/internal/node-logger` in next major release. +// Dynamic import for logger to support multiple Storybook versions +async function getLogger() { + try { + // Try high version first (since Storybook 9) + const mod = await import('storybook/internal/node-logger'); + return mod.logger; + } catch { + // Fallback to low version + const mod = await import('@storybook/node-logger'); + return mod.logger; + } +} + import type { moduleFederationPlugin } from '@module-federation/sdk'; import type { ModuleFederationConfig } from '@nx/webpack'; @@ -38,6 +51,9 @@ export const webpack = async ( const { moduleFederationConfig, presets, nxModuleFederationConfig } = options; const context = webpackContext || process.cwd(); + // Get logger instance (supports multiple Storybook versions) + const logger = await getLogger(); + // Detect webpack version. More about storybook webpack config https://storybook.js.org/docs/react/addons/writing-presets#webpack const webpackVersion = await presets.apply('webpackVersion'); logger.info(`=> [MF] Webpack ${webpackVersion} version detected`);