diff --git a/packages/react/src/migrations/update-13-0-0/webpack5-changes-utils.ts b/packages/react/src/migrations/update-13-0-0/webpack5-changes-utils.ts index 7200c4fc36..ff3d011033 100644 --- a/packages/react/src/migrations/update-13-0-0/webpack5-changes-utils.ts +++ b/packages/react/src/migrations/update-13-0-0/webpack5-changes-utils.ts @@ -11,11 +11,18 @@ import { findNodes } from '@nrwl/workspace/src/utilities/typescript/find-nodes'; export async function migrateToWebPack5(tree: Tree) { allReactProjectsWithStorybookConfiguration(tree).forEach((project) => { - editProjectMainJs( - tree, - `${project.storybookConfigPath}/main.js`, - project.projectName - ); + let storybookConfigFile = `${project.storybookConfigPath}/main.js`; + if (!tree.exists(storybookConfigFile)) { + // try to see whether there's a main.ts file + storybookConfigFile = `${project.storybookConfigPath}/main.ts`; + } + + if (!tree.exists(storybookConfigFile)) { + // ok...give up + return; + } + + editProjectMainJs(tree, storybookConfigFile, project.projectName); }); await formatFiles(tree); } diff --git a/packages/storybook/src/executors/utils.ts b/packages/storybook/src/executors/utils.ts index 99f55a7abd..9c7d6654a3 100644 --- a/packages/storybook/src/executors/utils.ts +++ b/packages/storybook/src/executors/utils.ts @@ -73,12 +73,28 @@ export function runStorybookSetupCheck(options: CommonNxStorybookConfig) { function reactWebpack5Check(options: CommonNxStorybookConfig) { if (options.uiFramework === '@storybook/react') { - // check whether the current Storybook configuration has the webpack 5 builder enabled - const storybookConfig = readFileSync( - joinPathFragments(options.config.configFolder, 'main.js'), - { encoding: 'utf8' } + let storybookConfigFilePath = joinPathFragments( + options.config.configFolder, + 'main.js' ); + if (!existsSync(storybookConfigFilePath)) { + storybookConfigFilePath = joinPathFragments( + options.config.configFolder, + 'main.ts' + ); + } + + if (!existsSync(storybookConfigFilePath)) { + // looks like there's no main config file, so skip + return; + } + + // check whether the current Storybook configuration has the webpack 5 builder enabled + const storybookConfig = readFileSync(storybookConfigFilePath, { + encoding: 'utf8', + }); + if (!storybookConfig.includes(`builder: 'webpack5'`)) { // storybook needs to be upgraded to webpack 5 logger.warn(`