diff --git a/code/core/scripts/helpers/sourcefiles.ts b/code/core/scripts/helpers/sourcefiles.ts index 7b38a00e025e..2f437961a91e 100644 --- a/code/core/scripts/helpers/sourcefiles.ts +++ b/code/core/scripts/helpers/sourcefiles.ts @@ -55,7 +55,7 @@ async function generateVersionsFile(prettierConfig: prettier.Options | null): Pr } async function generateFrameworksFile(prettierConfig: prettier.Options | null): Promise { - const thirdPartyFrameworks = ['qwik', 'solid']; + const thirdPartyFrameworks = ['qwik', 'solid', 'react-rsbuild', 'vue3-rsbuild']; const location = join(__dirname, '..', '..', 'src', 'types', 'modules', 'frameworks.ts'); const frameworksDirectory = join(__dirname, '..', '..', '..', 'frameworks'); diff --git a/code/core/src/cli/helpers.ts b/code/core/src/cli/helpers.ts index cae2ab46e394..355e142cece1 100644 --- a/code/core/src/cli/helpers.ts +++ b/code/core/src/cli/helpers.ts @@ -18,7 +18,7 @@ import stripJsonComments from 'strip-json-comments'; import invariant from 'tiny-invariant'; import { getRendererDir } from './dirs'; -import { CoreBuilder, SupportedLanguage } from './project_types'; +import { CommunityBuilder, CoreBuilder, SupportedLanguage } from './project_types'; const logger = console; @@ -144,7 +144,10 @@ type CopyTemplateFilesOptions = { /** @deprecated Please use `frameworkToRenderer` from `@storybook/core-common` instead */ export const frameworkToRenderer = CoreFrameworkToRenderer; -export const frameworkToDefaultBuilder: Record = { +export const frameworkToDefaultBuilder: Record< + SupportedFrameworks, + CoreBuilder | CommunityBuilder +> = { angular: CoreBuilder.Webpack5, ember: CoreBuilder.Webpack5, 'html-vite': CoreBuilder.Vite, @@ -165,6 +168,9 @@ export const frameworkToDefaultBuilder: Record 'vue3-webpack5': CoreBuilder.Webpack5, 'web-components-vite': CoreBuilder.Vite, 'web-components-webpack5': CoreBuilder.Webpack5, + // Only to pass type checking, will never be used + 'react-rsbuild': CommunityBuilder.Rsbuild, + 'vue3-rsbuild': CommunityBuilder.Rsbuild, }; export async function copyTemplateFiles({ diff --git a/code/core/src/cli/project_types.ts b/code/core/src/cli/project_types.ts index 11ec1298cd34..5d7d4a4d3ead 100644 --- a/code/core/src/cli/project_types.ts +++ b/code/core/src/cli/project_types.ts @@ -74,6 +74,10 @@ export enum CoreWebpackCompilers { SWC = 'swc', } +export enum CommunityBuilder { + Rsbuild = 'rsbuild', +} + export const compilerNameToCoreCompiler: Record = { '@storybook/addon-webpack5-compiler-babel': CoreWebpackCompilers.Babel, '@storybook/addon-webpack5-compiler-swc': CoreWebpackCompilers.SWC, diff --git a/code/core/src/common/utils/framework-to-renderer.ts b/code/core/src/common/utils/framework-to-renderer.ts index 63107ad8313b..1dd1fa0b811e 100644 --- a/code/core/src/common/utils/framework-to-renderer.ts +++ b/code/core/src/common/utils/framework-to-renderer.ts @@ -26,6 +26,8 @@ export const frameworkToRenderer: Record< 'vue3-webpack5': 'vue3', 'web-components-vite': 'web-components', 'web-components-webpack5': 'web-components', + 'react-rsbuild': 'react', + 'vue3-rsbuild': 'vue3', // renderers html: 'html', preact: 'preact', diff --git a/code/core/src/common/utils/get-storybook-info.ts b/code/core/src/common/utils/get-storybook-info.ts index 27a7709910d4..af65546949eb 100644 --- a/code/core/src/common/utils/get-storybook-info.ts +++ b/code/core/src/common/utils/get-storybook-info.ts @@ -48,6 +48,8 @@ export const frameworkPackages: Record = { // community (outside of monorepo) 'storybook-framework-qwik': 'qwik', 'storybook-solidjs-vite': 'solid', + 'storybook-react-rsbuild': 'react-rsbuild', + 'storybook-vue3-rsbuild': 'vue3-rsbuild', }; export const builderPackages = ['@storybook/builder-webpack5', '@storybook/builder-vite']; diff --git a/code/core/src/types/modules/frameworks.ts b/code/core/src/types/modules/frameworks.ts index 246cea20ff9a..2f2028db810b 100644 --- a/code/core/src/types/modules/frameworks.ts +++ b/code/core/src/types/modules/frameworks.ts @@ -19,4 +19,6 @@ export type SupportedFrameworks = | 'web-components-vite' | 'web-components-webpack5' | 'qwik' - | 'solid'; + | 'solid' + | 'react-rsbuild' + | 'vue3-rsbuild';