From e6dd29c18b46c5d0f495055063dd08ccee90c889 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Mon, 22 Nov 2021 13:24:53 +0100 Subject: [PATCH 1/3] resolve the used builder in the webpack preset for docs, so we resolve the proper version of babel-loader --- addons/docs/src/frameworks/common/preset.ts | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/addons/docs/src/frameworks/common/preset.ts b/addons/docs/src/frameworks/common/preset.ts index 5575e875a1d4..477677730492 100644 --- a/addons/docs/src/frameworks/common/preset.ts +++ b/addons/docs/src/frameworks/common/preset.ts @@ -4,10 +4,7 @@ import remarkExternalLinks from 'remark-external-links'; // @ts-ignore import { createCompiler } from '@storybook/csf-tools/mdx'; - -const resolvedBabelLoader = require.resolve('babel-loader', { - paths: [require.resolve('@storybook/builder-webpack4')], // FIXME!!! -}); +import type { Options } from '@storybook/core-common'; // for frameworks that are not working with react, we need to configure // the jsx to transpile mdx, for now there will be a flag for that @@ -34,8 +31,21 @@ function createBabelOptions({ babelOptions, mdxBabelOptions, configureJSX }: Bab }; } -export function webpack(webpackConfig: any = {}, options: any = {}) { +export async function webpack( + webpackConfig: any = {}, + options: Options & + BabelParams & { sourceLoaderOptions: any; transcludeMarkdown: boolean } & Parameters< + typeof createCompiler + >[0] +) { + const { builder } = await options.presets.apply('core'); + + const resolvedBabelLoader = require.resolve('babel-loader', { + paths: [require.resolve(`@storybook/builder-${builder}`)], // FIXME!!! + }); + const { module = {} } = webpackConfig; + // it will reuse babel options that are already in use in storybook // also, these babel options are chained with other presets. const { From 0d9f37b3ea98f9789dabff99afe1b19e28434afe Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Mon, 22 Nov 2021 13:29:26 +0100 Subject: [PATCH 2/3] fault tolerance when the user hasn't specified the core property at all --- addons/docs/src/frameworks/common/preset.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/docs/src/frameworks/common/preset.ts b/addons/docs/src/frameworks/common/preset.ts index 477677730492..8a0a6585f68c 100644 --- a/addons/docs/src/frameworks/common/preset.ts +++ b/addons/docs/src/frameworks/common/preset.ts @@ -38,7 +38,8 @@ export async function webpack( typeof createCompiler >[0] ) { - const { builder } = await options.presets.apply('core'); + // @ts-ignore + const { builder = 'webpack4' } = await options.presets.apply('core', {}); const resolvedBabelLoader = require.resolve('babel-loader', { paths: [require.resolve(`@storybook/builder-${builder}`)], // FIXME!!! From 3dfe1303af210a7c17a80e168bbc4bdd46590930 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Wed, 5 Jan 2022 14:01:05 +0100 Subject: [PATCH 3/3] fix review comment --- addons/docs/src/frameworks/common/preset.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/addons/docs/src/frameworks/common/preset.ts b/addons/docs/src/frameworks/common/preset.ts index 8a0a6585f68c..43c7b4fbaf4d 100644 --- a/addons/docs/src/frameworks/common/preset.ts +++ b/addons/docs/src/frameworks/common/preset.ts @@ -38,11 +38,12 @@ export async function webpack( typeof createCompiler >[0] ) { - // @ts-ignore - const { builder = 'webpack4' } = await options.presets.apply('core', {}); + const { builder = 'webpack4' } = await options.presets.apply<{ builder: any }>('core', {} as any); const resolvedBabelLoader = require.resolve('babel-loader', { - paths: [require.resolve(`@storybook/builder-${builder}`)], // FIXME!!! + paths: builder.match(/(webpack4|webpack5)/) + ? [require.resolve(`@storybook/builder-${builder}`)] + : [builder], }); const { module = {} } = webpackConfig;