create-storybook 8.4.0-alpha.8 → 8.4.0-beta.1
Sign up to get free protection for your applications and to get access to all the features.
package/dist/bin/index.cjs
CHANGED
@@ -41,20 +41,20 @@
|
|
41
41
|
`,"").trim();try{let prettier=(await import("prettier")).default;preview=await prettier.format(preview,{...await prettier.resolveConfig(previewPath),filepath:previewPath})}catch{import_node_logger.logger.verbose(`Failed to prettify ${previewPath}`)}await(0,import_promises.writeFile)(previewPath,preview,{encoding:"utf8"})}var logger2=console,defaultOptions={extraPackages:[],extraAddons:[],staticDir:void 0,addScripts:!0,addMainFile:!0,addComponents:!0,webpackCompiler:()=>{},extraMain:void 0,framework:void 0,extensions:void 0,componentsDestinationPath:void 0,storybookConfigFolder:".storybook"},getBuilderDetails=builder=>{let map=import_common.versions;if(map[builder])return builder;let builderPackage=`@storybook/${builder}`;return map[builderPackage]?builderPackage:builder},getExternalFramework=framework=>import_cli2.externalFrameworks.find(exFramework=>framework!==void 0&&(exFramework.name===framework||exFramework.packageName===framework||exFramework?.frameworks?.some?.(item=>item===framework))),getFrameworkPackage=(framework,renderer,builder)=>{let externalFramework=getExternalFramework(framework),storybookBuilder=builder?.replace(/^@storybook\/builder-/,""),storybookFramework=framework?.replace(/^@storybook\//,"");if(externalFramework===void 0){let frameworkPackage=framework?`@storybook/${storybookFramework}`:`@storybook/${renderer}-${storybookBuilder}`;if(import_common.versions[frameworkPackage])return frameworkPackage;throw new Error(import_ts_dedent2.dedent`
|
42
42
|
Could not find framework package: ${frameworkPackage}.
|
43
43
|
Make sure this package exists, and if it does, please file an issue as this might be a bug in Storybook.
|
44
|
-
`)}return externalFramework.frameworks!==void 0?externalFramework.frameworks.find(item=>item.match(new RegExp(`-${storybookBuilder}`))):externalFramework.packageName},getRendererPackage=(framework,renderer)=>{let externalFramework=getExternalFramework(framework);return externalFramework!==void 0?externalFramework.renderer||externalFramework.packageName:`@storybook/${renderer}`},applyRequireWrapper=packageName=>`%%getAbsolutePath('${packageName}')%%`,getFrameworkDetails=(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames)=>{let frameworkPackage=getFrameworkPackage(framework,renderer,builder);(0,import_tiny_invariant.default)(frameworkPackage,"Missing framework package.");let frameworkPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(frameworkPackage):frameworkPackage,rendererPackage=getRendererPackage(framework,renderer),rendererPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(rendererPackage):rendererPackage,builderPackage=getBuilderDetails(builder),builderPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(builderPackage):builderPackage,isKnownFramework=!!getExternalFramework(frameworkPackage)||!!import_common.versions[frameworkPackage],isKnownRenderer=!!import_common.versions[rendererPackage];if(isKnownFramework)return{packages:[rendererPackage,frameworkPackage],framework:frameworkPackagePath,rendererId:renderer,type:"framework"};if(isKnownRenderer)return{packages:[rendererPackage,builderPackage],builder:builderPackagePath,renderer:rendererPackagePath,rendererId:renderer,type:"renderer"};throw new Error(`Could not find the framework (${frameworkPackage}) or renderer (${rendererPackage}) package`)},stripVersions=addons=>addons.map(addon=>(0,import_common.getPackageDetails)(addon)[0]),hasInteractiveStories=rendererId=>["react","angular","preact","svelte","vue3","html","solid","qwik"].includes(rendererId),hasFrameworkTemplates=framework=>framework?["angular","nextjs"].includes(framework):!1;async function baseGenerator(packageManager,npmOptions,{language,builder,pnp,frameworkPreviewParts,projectType},renderer,options=defaultOptions,framework){let shouldApplyRequireWrapperOnPackageNames=packageManager.isStorybookInMonorepo()||pnp;builder||(builder=await(0,import_cli5.detectBuilder)(packageManager,projectType));let{packages:frameworkPackages,type,rendererId,framework:frameworkInclude,builder:builderInclude}=getFrameworkDetails(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames),{extraAddons:extraAddonPackages=[],extraPackages,staticDir,addScripts,addMainFile,addComponents,extraMain,extensions,storybookConfigFolder,componentsDestinationPath,webpackCompiler}={...defaultOptions,...options},compiler=webpackCompiler?webpackCompiler({builder}):void 0,extraAddonsToInstall=typeof extraAddonPackages=="function"?await extraAddonPackages({builder:builder||builderInclude,framework:framework||frameworkInclude}):extraAddonPackages;extraAddonsToInstall.push("@storybook/addon-essentials","@chromatic-com/storybook@^
|
44
|
+
`)}return externalFramework.frameworks!==void 0?externalFramework.frameworks.find(item=>item.match(new RegExp(`-${storybookBuilder}`))):externalFramework.packageName},getRendererPackage=(framework,renderer)=>{let externalFramework=getExternalFramework(framework);return externalFramework!==void 0?externalFramework.renderer||externalFramework.packageName:`@storybook/${renderer}`},applyRequireWrapper=packageName=>`%%getAbsolutePath('${packageName}')%%`,getFrameworkDetails=(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames)=>{let frameworkPackage=getFrameworkPackage(framework,renderer,builder);(0,import_tiny_invariant.default)(frameworkPackage,"Missing framework package.");let frameworkPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(frameworkPackage):frameworkPackage,rendererPackage=getRendererPackage(framework,renderer),rendererPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(rendererPackage):rendererPackage,builderPackage=getBuilderDetails(builder),builderPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(builderPackage):builderPackage,isKnownFramework=!!getExternalFramework(frameworkPackage)||!!import_common.versions[frameworkPackage],isKnownRenderer=!!import_common.versions[rendererPackage];if(isKnownFramework)return{packages:[rendererPackage,frameworkPackage],framework:frameworkPackagePath,rendererId:renderer,type:"framework"};if(isKnownRenderer)return{packages:[rendererPackage,builderPackage],builder:builderPackagePath,renderer:rendererPackagePath,rendererId:renderer,type:"renderer"};throw new Error(`Could not find the framework (${frameworkPackage}) or renderer (${rendererPackage}) package`)},stripVersions=addons=>addons.map(addon=>(0,import_common.getPackageDetails)(addon)[0]),hasInteractiveStories=rendererId=>["react","angular","preact","svelte","vue3","html","solid","qwik"].includes(rendererId),hasFrameworkTemplates=framework=>framework?["angular","nextjs"].includes(framework):!1;async function baseGenerator(packageManager,npmOptions,{language,builder,pnp,frameworkPreviewParts,projectType},renderer,options=defaultOptions,framework){let shouldApplyRequireWrapperOnPackageNames=packageManager.isStorybookInMonorepo()||pnp;builder||(builder=await(0,import_cli5.detectBuilder)(packageManager,projectType));let{packages:frameworkPackages,type,rendererId,framework:frameworkInclude,builder:builderInclude}=getFrameworkDetails(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames),{extraAddons:extraAddonPackages=[],extraPackages,staticDir,addScripts,addMainFile,addComponents,extraMain,extensions,storybookConfigFolder,componentsDestinationPath,webpackCompiler}={...defaultOptions,...options},compiler=webpackCompiler?webpackCompiler({builder}):void 0,extraAddonsToInstall=typeof extraAddonPackages=="function"?await extraAddonPackages({builder:builder||builderInclude,framework:framework||frameworkInclude}):extraAddonPackages;extraAddonsToInstall.push("@storybook/addon-essentials","@chromatic-com/storybook@^3");let addons=[...compiler?[`@storybook/addon-webpack5-compiler-${compiler}`]:[],...stripVersions(extraAddonsToInstall)].filter(Boolean),addonPackages=["@storybook/blocks",...compiler?[`@storybook/addon-webpack5-compiler-${compiler}`]:[],...extraAddonsToInstall].filter(Boolean);["solid","qwik"].includes(rendererId)?addonPackages.push("@storybook/testing-library"):addonPackages.push("@storybook/test"),hasInteractiveStories(rendererId)&&(addons.push("@storybook/addon-interactions"),addonPackages.push("@storybook/addon-interactions"));let packageJson=await packageManager.retrievePackageJson(),installedDependencies=new Set(Object.keys({...packageJson.dependencies,...packageJson.devDependencies}));if(type==="renderer")throw new Error(import_ts_dedent2.dedent`
|
45
45
|
Sorry, for now, you can not do this, please use a framework such as @storybook/react-webpack5
|
46
46
|
|
47
47
|
https://github.com/storybookjs/storybook/issues/18360
|
48
48
|
`);let extraPackagesToInstall=typeof extraPackages=="function"?await extraPackages({builder:builder||builderInclude,framework:framework||frameworkInclude}):extraPackages,allPackages=["storybook",getExternalFramework(rendererId)?void 0:`@storybook/${rendererId}`,...frameworkPackages,...addonPackages,...extraPackagesToInstall||[]].filter(Boolean),packages=[...new Set(allPackages)].filter(packageToInstall=>!installedDependencies.has((0,import_common.getPackageDetails)(packageToInstall)[0]));logger2.log();let versionedPackagesSpinner=(0,import_ora.default)({indent:2,text:`Getting the correct version of ${packages.length} packages`}).start(),versionedPackages=await packageManager.getVersionedPackages(packages);versionedPackagesSpinner.succeed();try{if(process.env.CI!=="true"){let{hasEslint,isStorybookPluginInstalled,eslintConfigFile}=await(0,import_cli4.extractEslintInfo)(packageManager);hasEslint&&!isStorybookPluginInstalled&&(versionedPackages.push("eslint-plugin-storybook"),await(0,import_cli4.configureEslintPlugin)(eslintConfigFile??void 0,packageManager))}}catch{}if(versionedPackages.length>0){let addDependenciesSpinner=(0,import_ora.default)({indent:2,text:"Installing Storybook dependencies"}).start();await packageManager.addDependencies({...npmOptions,packageJson},versionedPackages),addDependenciesSpinner.succeed()}if(await(0,import_promises2.mkdir)(`./${storybookConfigFolder}`,{recursive:!0}),addMainFile){let prefixes=shouldApplyRequireWrapperOnPackageNames?['import { join, dirname } from "path"',language===import_cli2.SupportedLanguage.JAVASCRIPT?import_ts_dedent2.dedent`/**
|
49
49
|
* This function is used to resolve the absolute path of a package.
|
50
50
|
* It is needed in projects that use Yarn PnP or are set up within a monorepo.
|
51
|
-
*/
|
51
|
+
*/
|
52
52
|
function getAbsolutePath(value) {
|
53
53
|
return dirname(require.resolve(join(value, 'package.json')))
|
54
54
|
}`:import_ts_dedent2.dedent`/**
|
55
55
|
* This function is used to resolve the absolute path of a package.
|
56
56
|
* It is needed in projects that use Yarn PnP or are set up within a monorepo.
|
57
|
-
*/
|
57
|
+
*/
|
58
58
|
function getAbsolutePath(value: string): any {
|
59
59
|
return dirname(require.resolve(join(value, 'package.json')))
|
60
60
|
}`]:[];await configureMain({framework:{name:frameworkInclude,options:options.framework||{}},prefixes,storybookConfigFolder,addons:shouldApplyRequireWrapperOnPackageNames?addons.map(addon=>applyRequireWrapper(addon)):addons,extensions,language,...staticDir?{staticDirs:[(0,import_node_path2.join)("..",staticDir)]}:null,...extraMain,...type!=="framework"?{core:{builder:builderInclude}}:{}})}if(await configurePreview({frameworkPreviewParts,storybookConfigFolder,language,rendererId}),addScripts&&await packageManager.addStorybookCommandInScripts({port:6006}),addComponents){let templateLocation=hasFrameworkTemplates(framework)?framework:rendererId;if(!templateLocation)throw new Error(`Could not find template location for ${framework} or ${rendererId}`);await(0,import_cli3.copyTemplateFiles)({renderer:templateLocation,packageManager,language,destination:componentsDestinationPath,commonAssetsDir:(0,import_node_path2.join)(getCliDir(),"rendererAssets","common")})}}function getCliDir(){return(0,import_node_path2.dirname)(require.resolve("create-storybook/package.json"))}var generator=async(packageManager,npmOptions,options,commandOptions)=>{let angularJSON=new import_cli7.AngularJSON;if(!angularJSON.projects||angularJSON.projects&&Object.keys(angularJSON.projects).length===0)throw new Error("Storybook was not able to find any projects in your angular.json file. Are you sure this is an Angular CLI project?");if(angularJSON.projectsWithoutStorybook.length===0)throw new Error("Every project in your workspace is already set up with Storybook. There is nothing to do!");let angularProjectName=await angularJSON.getProjectName();(0,import_common2.commandLog)(`Adding Storybook support to your "${angularProjectName}" project`);let angularProject=angularJSON.getProjectSettingsByName(angularProjectName);if(!angularProject)throw new Error(`Somehow we were not able to retrieve the "${angularProjectName}" project in your angular.json file. This is likely a bug in Storybook, please file an issue.`);let{root,projectType}=angularProject,{projects}=angularJSON,useCompodoc=commandOptions?.yes?!0:await(0,import_cli7.promptForCompoDocs)(),storybookFolder=root?`${root}/.storybook`:".storybook";angularJSON.addStorybookEntries({angularProjectName,storybookFolder,useCompodoc,root}),angularJSON.write(),await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli6.CoreBuilder.Webpack5,...useCompodoc&&{frameworkPreviewParts:{prefix:import_cli7.compoDocPreviewPrefix}}},"angular",{extraAddons:["@storybook/addon-onboarding"],...useCompodoc&&{extraPackages:["@compodoc/compodoc","@storybook/addon-docs"]},addScripts:!1,componentsDestinationPath:root?`${root}/src/stories`:void 0,storybookConfigFolder:storybookFolder,webpackCompiler:()=>{}},"angular"),Object.keys(projects).length===1&&packageManager.addScripts({storybook:`ng run ${angularProjectName}:storybook`,"build-storybook":`ng run ${angularProjectName}:build-storybook`});let projectTypeValue=projectType||"application";projectTypeValue!=="application"&&projectTypeValue!=="library"&&(projectTypeValue="application");let templateDir=(0,import_node_path3.join)(getCliDir(),"templates","angular",projectTypeValue);return templateDir&&(0,import_cli8.copyTemplate)(templateDir,root||void 0),{projectName:angularProjectName,configDir:storybookFolder}},ANGULAR_default=generator;var import_cli9=require("storybook/internal/cli");var generator2=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli9.CoreBuilder.Webpack5},"ember",{staticDir:"dist"},"ember")},EMBER_default=generator2;var import_cli10=require("storybook/internal/cli");var generator3=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"html",{webpackCompiler:({builder})=>builder===import_cli10.CoreBuilder.Webpack5?"swc":void 0})},HTML_default=generator3;var import_node_fs=require("fs"),import_node_path4=require("path"),import_cli11=require("storybook/internal/cli");var generator4=async(packageManager,npmOptions,options)=>{let staticDir;(0,import_node_fs.existsSync)((0,import_node_path4.join)(process.cwd(),"public"))&&(staticDir="public"),await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli11.CoreBuilder.Webpack5},"react",{staticDir,extraAddons:["@storybook/addon-onboarding"],webpackCompiler:({builder})=>{}},"nextjs")},NEXTJS_default=generator4;var import_cli12=require("storybook/internal/cli");var generator5=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"preact",{webpackCompiler:({builder})=>builder===import_cli12.CoreBuilder.Webpack5?"swc":void 0})},PREACT_default=generator5;var generator6=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"qwik",{},"qwik")},QWIK_default=generator6;var import_cli13=require("storybook/internal/cli"),import_cli14=require("storybook/internal/cli");var generator7=async(packageManager,npmOptions,options)=>{let extraPackages=await(0,import_cli13.detectLanguage)(packageManager)===import_cli14.SupportedLanguage.JAVASCRIPT?["prop-types"]:[];await baseGenerator(packageManager,npmOptions,options,"react",{extraPackages,webpackCompiler:({builder})=>builder===import_cli14.CoreBuilder.Webpack5?"swc":void 0,extraAddons:["@storybook/addon-onboarding"]})},REACT_default=generator7;var import_cli15=require("storybook/internal/cli"),import_cli16=require("storybook/internal/cli"),generator8=async(packageManager,npmOptions)=>{let packageJson=await packageManager.retrievePackageJson(),missingReactDom=!packageJson.dependencies["react-dom"]&&!packageJson.devDependencies["react-dom"],reactVersion=packageJson.dependencies.react,packagesToResolve=[...["react-native-safe-area-context","@react-native-async-storage/async-storage","@react-native-community/datetimepicker","@react-native-community/slider","react-native-reanimated","react-native-gesture-handler","@gorhom/bottom-sheet","react-native-svg"].filter(dep=>!packageJson.dependencies[dep]&&!packageJson.devDependencies[dep]),"@storybook/addon-ondevice-controls","@storybook/addon-ondevice-actions","@storybook/react-native"],packagesWithFixedVersion=[],versionedPackages=await packageManager.getVersionedPackages(packagesToResolve),babelDependencies=await(0,import_cli15.getBabelDependencies)(packageManager,packageJson),packages=[];packages.push(...babelDependencies),packages.push(...packagesWithFixedVersion),packages.push(...versionedPackages),missingReactDom&&reactVersion&&packages.push(`react-dom@${reactVersion}`),await packageManager.addDependencies({...npmOptions,packageJson},packages),packageManager.addScripts({"storybook-generate":"sb-rn-get-stories"}),await(0,import_cli15.copyTemplateFiles)({packageManager,renderer:"react-native",language:import_cli16.SupportedLanguage.TYPESCRIPT_4_9,destination:".storybook"})},REACT_NATIVE_default=generator8;var import_node_fs2=require("fs"),import_node_path5=require("path"),import_cli17=require("storybook/internal/cli"),import_semver=__toESM(require("semver"),1),import_ts_dedent3=require("ts-dedent");var generator9=async(packageManager,npmOptions,options)=>{let monorepoRootPath=(0,import_node_path5.join)(__dirname,"..","..","..","..","..",".."),extraMain=options.linkable?{webpackFinal:`%%(config) => {
|
@@ -73,7 +73,7 @@
|
|
73
73
|
Storybook 7.0+ doesn't support react-scripts@<5.0.0.
|
74
74
|
|
75
75
|
https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#create-react-app-dropped-cra4-support
|
76
|
-
`);let extraPackages=[];extraPackages.push("webpack"),extraPackages.push("prop-types");let extraAddons=["@storybook/preset-create-react-app","@storybook/addon-onboarding"];await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli17.CoreBuilder.Webpack5},"react",{webpackCompiler:()=>{},extraAddons,extraPackages,staticDir:(0,import_node_fs2.existsSync)((0,import_node_path5.resolve)("./public"))?"public":void 0,extraMain})},REACT_SCRIPTS_default=generator9;var import_cli18=require("storybook/internal/cli");var generator10=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli18.CoreBuilder.Webpack5},"server",{webpackCompiler:()=>"swc",extensions:["json","yaml","yml"]})},SERVER_default=generator10;var import_cli19=require("storybook/internal/cli");var generator11=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli19.CoreBuilder.Vite},"solid",{},"solid")},SOLID_default=generator11;var import_cli20=require("storybook/internal/cli"),import_semver2=require("semver");var getAddonSvelteCsfVersion=async packageManager=>{let svelteVersion=await(0,import_cli20.getVersionSafe)(packageManager,"svelte");try{let svelteMajor=(0,import_semver2.major)(svelteVersion??"");if(svelteMajor===4)return"4";if(svelteMajor===5)return"^5.0.0-next.0"}catch{}return""},generator12=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,options,"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]})},SVELTE_default=generator12;var import_cli21=require("storybook/internal/cli");var generator13=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli21.CoreBuilder.Vite},"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]},"sveltekit")},SVELTEKIT_default=generator13;var import_cli22=require("storybook/internal/cli");var generator14=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"vue3",{extraAddons:["@storybook/addon-onboarding"],extraPackages:async({builder})=>builder===import_cli22.CoreBuilder.Webpack5?["vue-loader@^17.0.0","@vue/compiler-sfc@^3.2.0"]:[],webpackCompiler:({builder})=>builder===import_cli22.CoreBuilder.Webpack5?"swc":void 0})},VUE3_default=generator14;var import_cli23=require("storybook/internal/cli");var generator15=async(packageManager,npmOptions,options)=>baseGenerator(packageManager,npmOptions,options,"web-components",{extraPackages:["lit"],webpackCompiler:({builder})=>builder===import_cli23.CoreBuilder.Webpack5?"swc":void 0}),WEB_COMPONENTS_default=generator15;var import_cli24=require("storybook/internal/cli");var generator16=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"react",{extraAddons:["@storybook/addon-onboarding"],webpackCompiler:({builder})=>builder===import_cli24.CoreBuilder.Webpack5?"swc":void 0})},WEBPACK_REACT_default=generator16;var import_node_fs3=require("fs"),import_promises3=require("fs/promises"),import_node_logger2=require("storybook/internal/node-logger"),import_server_errors=require("storybook/internal/server-errors"),import_telemetry=require("storybook/internal/telemetry");var import_execa=__toESM(require("execa"),1),import_picocolors=__toESM(require_picocolors(),1),import_prompts=__toESM(require("prompts"),1),import_ts_dedent4=require("ts-dedent"),SUPPORTED_PROJECTS={"react-vite-ts":{displayName:{type:"React",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template react-ts",yarn:"yarn create vite@latest . --template react-ts",pnpm:"pnpm create vite@latest . --template react-ts"}},"nextjs-ts":{displayName:{type:"Next.js",language:"TS"},createScript:{npm:'npm create next-app . -- --typescript --use-npm --eslint --tailwind --no-app --import-alias="@/*" --src-dir',yarn:'
|
76
|
+
`);let extraPackages=[];extraPackages.push("webpack"),extraPackages.push("prop-types");let extraAddons=["@storybook/preset-create-react-app","@storybook/addon-onboarding"];await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli17.CoreBuilder.Webpack5},"react",{webpackCompiler:()=>{},extraAddons,extraPackages,staticDir:(0,import_node_fs2.existsSync)((0,import_node_path5.resolve)("./public"))?"public":void 0,extraMain})},REACT_SCRIPTS_default=generator9;var import_cli18=require("storybook/internal/cli");var generator10=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli18.CoreBuilder.Webpack5},"server",{webpackCompiler:()=>"swc",extensions:["json","yaml","yml"]})},SERVER_default=generator10;var import_cli19=require("storybook/internal/cli");var generator11=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli19.CoreBuilder.Vite},"solid",{},"solid")},SOLID_default=generator11;var import_cli20=require("storybook/internal/cli"),import_semver2=require("semver");var getAddonSvelteCsfVersion=async packageManager=>{let svelteVersion=await(0,import_cli20.getVersionSafe)(packageManager,"svelte");try{let svelteMajor=(0,import_semver2.major)(svelteVersion??"");if(svelteMajor===4)return"4";if(svelteMajor===5)return"^5.0.0-next.0"}catch{}return""},generator12=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,options,"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]})},SVELTE_default=generator12;var import_cli21=require("storybook/internal/cli");var generator13=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli21.CoreBuilder.Vite},"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]},"sveltekit")},SVELTEKIT_default=generator13;var import_cli22=require("storybook/internal/cli");var generator14=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"vue3",{extraAddons:["@storybook/addon-onboarding"],extraPackages:async({builder})=>builder===import_cli22.CoreBuilder.Webpack5?["vue-loader@^17.0.0","@vue/compiler-sfc@^3.2.0"]:[],webpackCompiler:({builder})=>builder===import_cli22.CoreBuilder.Webpack5?"swc":void 0})},VUE3_default=generator14;var import_cli23=require("storybook/internal/cli");var generator15=async(packageManager,npmOptions,options)=>baseGenerator(packageManager,npmOptions,options,"web-components",{extraPackages:["lit"],webpackCompiler:({builder})=>builder===import_cli23.CoreBuilder.Webpack5?"swc":void 0}),WEB_COMPONENTS_default=generator15;var import_cli24=require("storybook/internal/cli");var generator16=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"react",{extraAddons:["@storybook/addon-onboarding"],webpackCompiler:({builder})=>builder===import_cli24.CoreBuilder.Webpack5?"swc":void 0})},WEBPACK_REACT_default=generator16;var import_node_fs3=require("fs"),import_promises3=require("fs/promises"),import_node_logger2=require("storybook/internal/node-logger"),import_server_errors=require("storybook/internal/server-errors"),import_telemetry=require("storybook/internal/telemetry");var import_execa=__toESM(require("execa"),1),import_picocolors=__toESM(require_picocolors(),1),import_prompts=__toESM(require("prompts"),1),import_ts_dedent4=require("ts-dedent"),SUPPORTED_PROJECTS={"react-vite-ts":{displayName:{type:"React",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template react-ts",yarn:"yarn create vite@latest . --template react-ts",pnpm:"pnpm create vite@latest . --template react-ts"}},"nextjs-ts":{displayName:{type:"Next.js",language:"TS"},createScript:{npm:'npm create next-app@^14 . -- --typescript --use-npm --eslint --tailwind --no-app --import-alias="@/*" --src-dir',yarn:'npx create-next-app@^14 . --typescript --use-yarn --eslint --tailwind --no-app --import-alias="@/*" --src-dir',pnpm:'pnpm create next-app^14 . --typescript --use-pnpm --eslint --tailwind --no-app --import-alias="@/*" --src-dir'}},"vue-vite-ts":{displayName:{type:"Vue 3",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template vue-ts",yarn:"yarn create vite@latest . --template vue-ts",pnpm:"pnpm create vite@latest . --template vue-ts"}},"angular-cli":{displayName:{type:"Angular",language:"TS"},createScript:{npm:"npx -p @angular/cli@latest ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --skip-install",yarn:"yarn dlx -p @angular/cli ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --package-manager=yarn --skip-install && touch yarn.lock && yarn set version berry && yarn config set nodeLinker node-modules",pnpm:"pnpm --package @angular/cli dlx ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --package-manager=pnpm --skip-install"}},"lit-vite-ts":{displayName:{type:"Lit",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template lit-ts",yarn:"yarn create vite@latest . --template lit-ts && touch yarn.lock && yarn set version berry && yarn config set nodeLinker pnp",pnpm:"pnpm create vite@latest . --template lit-ts"}}},packageManagerToCoercedName=packageManager=>{switch(packageManager){case"npm":return"npm";case"pnpm":return"pnpm";default:return"yarn"}},buildProjectDisplayNameForPrint=({displayName})=>{let{type,builder,language}=displayName;return`${import_picocolors.default.bold(import_picocolors.default.blue(type))} ${builder?`+ ${builder} `:""}(${language})`},scaffoldNewProject=async(packageManager,{disableTelemetry})=>{let packageManagerName=packageManagerToCoercedName(packageManager);import_node_logger2.logger.plain(boxen(import_ts_dedent4.dedent`
|
77
77
|
Would you like to generate a new project from the following list?
|
78
78
|
|
79
79
|
${import_picocolors.default.bold("Note:")}
|
@@ -85,7 +85,7 @@
|
|
85
85
|
"${projectDisplayName}" project with ${import_picocolors.default.bold(packageManagerName)} created successfully!
|
86
86
|
|
87
87
|
Continuing with Storybook installation...
|
88
|
-
`,{title:import_picocolors.default.bold("\u2705 Success!"),padding:1,borderStyle:"double",borderColor:"green"})),import_node_logger2.logger.line(1)},BASE_IGNORED_FILES=[".git",".gitignore",".DS_Store",".cache"],IGNORED_FILES_BY_PACKAGE_MANAGER={npm:[...BASE_IGNORED_FILES],yarn:[...BASE_IGNORED_FILES,".yarnrc.yml",".yarn"],pnpm:[...BASE_IGNORED_FILES]},currentDirectoryIsEmpty=packageManager=>{let packageManagerName=packageManagerToCoercedName(packageManager),cwdFolderEntries=(0,import_node_fs3.readdirSync)(process.cwd()),filesToIgnore=IGNORED_FILES_BY_PACKAGE_MANAGER[packageManagerName];return cwdFolderEntries.length===0||cwdFolderEntries.every(entry=>filesToIgnore.includes(entry))};var logger4=console,installStorybook=async(projectType,packageManager,options)=>{let npmOptions={installAsDevDependencies:!0,skipInstall:options.skipInstall},language=await(0,import_cli26.detectLanguage)(packageManager),pnp=await(0,import_cli26.detectPnp)(),generatorOptions={language,builder:options.builder,linkable:!!options.linkable,pnp:pnp||options.usePnp,yes:options.yes,projectType},runGenerator=async()=>{switch(projectType){case import_cli25.ProjectType.REACT_SCRIPTS:return REACT_SCRIPTS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Create React App" based project'));case import_cli25.ProjectType.REACT:return REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React" app'));case import_cli25.ProjectType.REACT_NATIVE:return REACT_NATIVE_default(packageManager,npmOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React Native" app'));case import_cli25.ProjectType.QWIK:return QWIK_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Qwik" app'));case import_cli25.ProjectType.WEBPACK_REACT:return WEBPACK_REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Webpack React" app'));case import_cli25.ProjectType.REACT_PROJECT:return REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React" library'));case import_cli25.ProjectType.NEXTJS:return NEXTJS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Next" app'));case import_cli25.ProjectType.VUE3:return VUE3_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Vue 3" app'));case import_cli25.ProjectType.ANGULAR:return(0,import_common3.commandLog)('Adding Storybook support to your "Angular" app'),ANGULAR_default(packageManager,npmOptions,generatorOptions,options);case import_cli25.ProjectType.EMBER:return EMBER_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Ember" app'));case import_cli25.ProjectType.HTML:return HTML_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "HTML" app'));case import_cli25.ProjectType.WEB_COMPONENTS:return WEB_COMPONENTS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "web components" app'));case import_cli25.ProjectType.PREACT:return PREACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Preact" app'));case import_cli25.ProjectType.SVELTE:return SVELTE_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Svelte" app'));case import_cli25.ProjectType.SVELTEKIT:return SVELTEKIT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "SvelteKit" app'));case import_cli25.ProjectType.SERVER:return SERVER_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Server" app'));case import_cli25.ProjectType.NX:throw new import_server_errors2.NxProjectDetectedError;case import_cli25.ProjectType.SOLID:return SOLID_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "SolidJS" app'));case import_cli25.ProjectType.UNSUPPORTED:return(0,import_common3.paddedLog)("We detected a project type that we don't support yet."),(0,import_common3.paddedLog)("If you'd like your framework to be supported, please let use know about it at https://github.com/storybookjs/storybook/issues"),logger4.log(),Promise.resolve();default:return(0,import_common3.paddedLog)(`We couldn't detect your project type. (code: ${projectType})`),(0,import_common3.paddedLog)("You can specify a project type explicitly via `storybook init --type <type>`, see our docs on how to configure Storybook for your framework: https://storybook.js.org/docs/
|
88
|
+
`,{title:import_picocolors.default.bold("\u2705 Success!"),padding:1,borderStyle:"double",borderColor:"green"})),import_node_logger2.logger.line(1)},BASE_IGNORED_FILES=[".git",".gitignore",".DS_Store",".cache"],IGNORED_FILES_BY_PACKAGE_MANAGER={npm:[...BASE_IGNORED_FILES],yarn:[...BASE_IGNORED_FILES,".yarnrc.yml",".yarn"],pnpm:[...BASE_IGNORED_FILES]},currentDirectoryIsEmpty=packageManager=>{let packageManagerName=packageManagerToCoercedName(packageManager),cwdFolderEntries=(0,import_node_fs3.readdirSync)(process.cwd()),filesToIgnore=IGNORED_FILES_BY_PACKAGE_MANAGER[packageManagerName];return cwdFolderEntries.length===0||cwdFolderEntries.every(entry=>filesToIgnore.includes(entry))};var logger4=console,installStorybook=async(projectType,packageManager,options)=>{let npmOptions={installAsDevDependencies:!0,skipInstall:options.skipInstall},language=await(0,import_cli26.detectLanguage)(packageManager),pnp=await(0,import_cli26.detectPnp)(),generatorOptions={language,builder:options.builder,linkable:!!options.linkable,pnp:pnp||options.usePnp,yes:options.yes,projectType},runGenerator=async()=>{switch(projectType){case import_cli25.ProjectType.REACT_SCRIPTS:return REACT_SCRIPTS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Create React App" based project'));case import_cli25.ProjectType.REACT:return REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React" app'));case import_cli25.ProjectType.REACT_NATIVE:return REACT_NATIVE_default(packageManager,npmOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React Native" app'));case import_cli25.ProjectType.QWIK:return QWIK_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Qwik" app'));case import_cli25.ProjectType.WEBPACK_REACT:return WEBPACK_REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Webpack React" app'));case import_cli25.ProjectType.REACT_PROJECT:return REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React" library'));case import_cli25.ProjectType.NEXTJS:return NEXTJS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Next" app'));case import_cli25.ProjectType.VUE3:return VUE3_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Vue 3" app'));case import_cli25.ProjectType.ANGULAR:return(0,import_common3.commandLog)('Adding Storybook support to your "Angular" app'),ANGULAR_default(packageManager,npmOptions,generatorOptions,options);case import_cli25.ProjectType.EMBER:return EMBER_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Ember" app'));case import_cli25.ProjectType.HTML:return HTML_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "HTML" app'));case import_cli25.ProjectType.WEB_COMPONENTS:return WEB_COMPONENTS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "web components" app'));case import_cli25.ProjectType.PREACT:return PREACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Preact" app'));case import_cli25.ProjectType.SVELTE:return SVELTE_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Svelte" app'));case import_cli25.ProjectType.SVELTEKIT:return SVELTEKIT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "SvelteKit" app'));case import_cli25.ProjectType.SERVER:return SERVER_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Server" app'));case import_cli25.ProjectType.NX:throw new import_server_errors2.NxProjectDetectedError;case import_cli25.ProjectType.SOLID:return SOLID_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "SolidJS" app'));case import_cli25.ProjectType.UNSUPPORTED:return(0,import_common3.paddedLog)("We detected a project type that we don't support yet."),(0,import_common3.paddedLog)("If you'd like your framework to be supported, please let use know about it at https://github.com/storybookjs/storybook/issues"),logger4.log(),Promise.resolve();default:return(0,import_common3.paddedLog)(`We couldn't detect your project type. (code: ${projectType})`),(0,import_common3.paddedLog)("You can specify a project type explicitly via `storybook init --type <type>`, see our docs on how to configure Storybook for your framework: https://storybook.js.org/docs/get-started/install"),logger4.log(),projectTypeInquirer(options,packageManager)}};try{return await runGenerator()}catch(err){throw err?.message!=="Canceled by the user"&&err?.stack&&logger4.error(`
|
89
89
|
${import_picocolors2.default.red(err.stack)}`),new import_common3.HandledError(err)}},projectTypeInquirer=async(options,packageManager)=>{let manualAnswer=options.yes?!0:await(0,import_prompts2.default)([{type:"confirm",name:"manual",message:"Do you want to manually choose a Storybook project type to install?"}]);if(manualAnswer!==!0&&manualAnswer.manual){let{manualFramework}=await(0,import_prompts2.default)([{type:"select",name:"manualFramework",message:"Please choose a project type from the following list:",choices:import_cli25.installableProjectTypes.map(type=>({title:type,value:type.toUpperCase()}))}]);if(manualFramework)return installStorybook(manualFramework,packageManager,options)}logger4.log(),logger4.log("For more information about installing Storybook: https://storybook.js.org/docs"),process.exit(0)};async function doInitiate(options){let{packageManager:pkgMgr}=options,packageManager=import_common3.JsPackageManagerFactory.getPackageManager({force:pkgMgr}),latestVersion=await packageManager.latestVersion("storybook"),currentVersion=import_common3.versions.storybook,isPrerelease=(0,import_semver3.prerelease)(currentVersion),isOutdated=(0,import_semver3.lt)(currentVersion,latestVersion),borderColor=isOutdated?"#FC521F":"#F1618C",messages={welcome:`Adding Storybook version ${import_picocolors2.default.bold(currentVersion)} to your project..`,notLatest:import_picocolors2.default.red(import_ts_dedent5.dedent`
|
90
90
|
This version is behind the latest release, which is: ${import_picocolors2.default.bold(latestVersion)}!
|
91
91
|
You likely ran the init command through npx, which can use a locally cached version, to get the latest please run:
|
package/dist/bin/index.js
CHANGED
@@ -61,20 +61,20 @@ var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropD
|
|
61
61
|
`,"").trim();try{let prettier=(await import('prettier')).default;preview=await prettier.format(preview,{...await prettier.resolveConfig(previewPath),filepath:previewPath});}catch{logger.verbose(`Failed to prettify ${previewPath}`);}await writeFile(previewPath,preview,{encoding:"utf8"});}var logger2=console,defaultOptions={extraPackages:[],extraAddons:[],staticDir:void 0,addScripts:!0,addMainFile:!0,addComponents:!0,webpackCompiler:()=>{},extraMain:void 0,framework:void 0,extensions:void 0,componentsDestinationPath:void 0,storybookConfigFolder:".storybook"},getBuilderDetails=builder=>{let map=versions;if(map[builder])return builder;let builderPackage=`@storybook/${builder}`;return map[builderPackage]?builderPackage:builder},getExternalFramework=framework=>externalFrameworks.find(exFramework=>framework!==void 0&&(exFramework.name===framework||exFramework.packageName===framework||exFramework?.frameworks?.some?.(item=>item===framework))),getFrameworkPackage=(framework,renderer,builder)=>{let externalFramework=getExternalFramework(framework),storybookBuilder=builder?.replace(/^@storybook\/builder-/,""),storybookFramework=framework?.replace(/^@storybook\//,"");if(externalFramework===void 0){let frameworkPackage=framework?`@storybook/${storybookFramework}`:`@storybook/${renderer}-${storybookBuilder}`;if(versions[frameworkPackage])return frameworkPackage;throw new Error(dedent`
|
62
62
|
Could not find framework package: ${frameworkPackage}.
|
63
63
|
Make sure this package exists, and if it does, please file an issue as this might be a bug in Storybook.
|
64
|
-
`)}return externalFramework.frameworks!==void 0?externalFramework.frameworks.find(item=>item.match(new RegExp(`-${storybookBuilder}`))):externalFramework.packageName},getRendererPackage=(framework,renderer)=>{let externalFramework=getExternalFramework(framework);return externalFramework!==void 0?externalFramework.renderer||externalFramework.packageName:`@storybook/${renderer}`},applyRequireWrapper=packageName=>`%%getAbsolutePath('${packageName}')%%`,getFrameworkDetails=(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames)=>{let frameworkPackage=getFrameworkPackage(framework,renderer,builder);invariant(frameworkPackage,"Missing framework package.");let frameworkPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(frameworkPackage):frameworkPackage,rendererPackage=getRendererPackage(framework,renderer),rendererPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(rendererPackage):rendererPackage,builderPackage=getBuilderDetails(builder),builderPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(builderPackage):builderPackage,isKnownFramework=!!getExternalFramework(frameworkPackage)||!!versions[frameworkPackage],isKnownRenderer=!!versions[rendererPackage];if(isKnownFramework)return {packages:[rendererPackage,frameworkPackage],framework:frameworkPackagePath,rendererId:renderer,type:"framework"};if(isKnownRenderer)return {packages:[rendererPackage,builderPackage],builder:builderPackagePath,renderer:rendererPackagePath,rendererId:renderer,type:"renderer"};throw new Error(`Could not find the framework (${frameworkPackage}) or renderer (${rendererPackage}) package`)},stripVersions=addons=>addons.map(addon=>getPackageDetails(addon)[0]),hasInteractiveStories=rendererId=>["react","angular","preact","svelte","vue3","html","solid","qwik"].includes(rendererId),hasFrameworkTemplates=framework=>framework?["angular","nextjs"].includes(framework):!1;async function baseGenerator(packageManager,npmOptions,{language,builder,pnp,frameworkPreviewParts,projectType},renderer,options=defaultOptions,framework){let shouldApplyRequireWrapperOnPackageNames=packageManager.isStorybookInMonorepo()||pnp;builder||(builder=await detectBuilder(packageManager,projectType));let{packages:frameworkPackages,type,rendererId,framework:frameworkInclude,builder:builderInclude}=getFrameworkDetails(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames),{extraAddons:extraAddonPackages=[],extraPackages,staticDir,addScripts,addMainFile,addComponents,extraMain,extensions,storybookConfigFolder,componentsDestinationPath,webpackCompiler}={...defaultOptions,...options},compiler=webpackCompiler?webpackCompiler({builder}):void 0,extraAddonsToInstall=typeof extraAddonPackages=="function"?await extraAddonPackages({builder:builder||builderInclude,framework:framework||frameworkInclude}):extraAddonPackages;extraAddonsToInstall.push("@storybook/addon-essentials","@chromatic-com/storybook@^
|
64
|
+
`)}return externalFramework.frameworks!==void 0?externalFramework.frameworks.find(item=>item.match(new RegExp(`-${storybookBuilder}`))):externalFramework.packageName},getRendererPackage=(framework,renderer)=>{let externalFramework=getExternalFramework(framework);return externalFramework!==void 0?externalFramework.renderer||externalFramework.packageName:`@storybook/${renderer}`},applyRequireWrapper=packageName=>`%%getAbsolutePath('${packageName}')%%`,getFrameworkDetails=(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames)=>{let frameworkPackage=getFrameworkPackage(framework,renderer,builder);invariant(frameworkPackage,"Missing framework package.");let frameworkPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(frameworkPackage):frameworkPackage,rendererPackage=getRendererPackage(framework,renderer),rendererPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(rendererPackage):rendererPackage,builderPackage=getBuilderDetails(builder),builderPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(builderPackage):builderPackage,isKnownFramework=!!getExternalFramework(frameworkPackage)||!!versions[frameworkPackage],isKnownRenderer=!!versions[rendererPackage];if(isKnownFramework)return {packages:[rendererPackage,frameworkPackage],framework:frameworkPackagePath,rendererId:renderer,type:"framework"};if(isKnownRenderer)return {packages:[rendererPackage,builderPackage],builder:builderPackagePath,renderer:rendererPackagePath,rendererId:renderer,type:"renderer"};throw new Error(`Could not find the framework (${frameworkPackage}) or renderer (${rendererPackage}) package`)},stripVersions=addons=>addons.map(addon=>getPackageDetails(addon)[0]),hasInteractiveStories=rendererId=>["react","angular","preact","svelte","vue3","html","solid","qwik"].includes(rendererId),hasFrameworkTemplates=framework=>framework?["angular","nextjs"].includes(framework):!1;async function baseGenerator(packageManager,npmOptions,{language,builder,pnp,frameworkPreviewParts,projectType},renderer,options=defaultOptions,framework){let shouldApplyRequireWrapperOnPackageNames=packageManager.isStorybookInMonorepo()||pnp;builder||(builder=await detectBuilder(packageManager,projectType));let{packages:frameworkPackages,type,rendererId,framework:frameworkInclude,builder:builderInclude}=getFrameworkDetails(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames),{extraAddons:extraAddonPackages=[],extraPackages,staticDir,addScripts,addMainFile,addComponents,extraMain,extensions,storybookConfigFolder,componentsDestinationPath,webpackCompiler}={...defaultOptions,...options},compiler=webpackCompiler?webpackCompiler({builder}):void 0,extraAddonsToInstall=typeof extraAddonPackages=="function"?await extraAddonPackages({builder:builder||builderInclude,framework:framework||frameworkInclude}):extraAddonPackages;extraAddonsToInstall.push("@storybook/addon-essentials","@chromatic-com/storybook@^3");let addons=[...compiler?[`@storybook/addon-webpack5-compiler-${compiler}`]:[],...stripVersions(extraAddonsToInstall)].filter(Boolean),addonPackages=["@storybook/blocks",...compiler?[`@storybook/addon-webpack5-compiler-${compiler}`]:[],...extraAddonsToInstall].filter(Boolean);["solid","qwik"].includes(rendererId)?addonPackages.push("@storybook/testing-library"):addonPackages.push("@storybook/test"),hasInteractiveStories(rendererId)&&(addons.push("@storybook/addon-interactions"),addonPackages.push("@storybook/addon-interactions"));let packageJson=await packageManager.retrievePackageJson(),installedDependencies=new Set(Object.keys({...packageJson.dependencies,...packageJson.devDependencies}));if(type==="renderer")throw new Error(dedent`
|
65
65
|
Sorry, for now, you can not do this, please use a framework such as @storybook/react-webpack5
|
66
66
|
|
67
67
|
https://github.com/storybookjs/storybook/issues/18360
|
68
68
|
`);let extraPackagesToInstall=typeof extraPackages=="function"?await extraPackages({builder:builder||builderInclude,framework:framework||frameworkInclude}):extraPackages,allPackages=["storybook",getExternalFramework(rendererId)?void 0:`@storybook/${rendererId}`,...frameworkPackages,...addonPackages,...extraPackagesToInstall||[]].filter(Boolean),packages=[...new Set(allPackages)].filter(packageToInstall=>!installedDependencies.has(getPackageDetails(packageToInstall)[0]));logger2.log();let versionedPackagesSpinner=ora({indent:2,text:`Getting the correct version of ${packages.length} packages`}).start(),versionedPackages=await packageManager.getVersionedPackages(packages);versionedPackagesSpinner.succeed();try{if(process.env.CI!=="true"){let{hasEslint,isStorybookPluginInstalled,eslintConfigFile}=await extractEslintInfo(packageManager);hasEslint&&!isStorybookPluginInstalled&&(versionedPackages.push("eslint-plugin-storybook"),await configureEslintPlugin(eslintConfigFile??void 0,packageManager));}}catch{}if(versionedPackages.length>0){let addDependenciesSpinner=ora({indent:2,text:"Installing Storybook dependencies"}).start();await packageManager.addDependencies({...npmOptions,packageJson},versionedPackages),addDependenciesSpinner.succeed();}if(await mkdir(`./${storybookConfigFolder}`,{recursive:!0}),addMainFile){let prefixes=shouldApplyRequireWrapperOnPackageNames?['import { join, dirname } from "path"',language===SupportedLanguage.JAVASCRIPT?dedent`/**
|
69
69
|
* This function is used to resolve the absolute path of a package.
|
70
70
|
* It is needed in projects that use Yarn PnP or are set up within a monorepo.
|
71
|
-
*/
|
71
|
+
*/
|
72
72
|
function getAbsolutePath(value) {
|
73
73
|
return dirname(require.resolve(join(value, 'package.json')))
|
74
74
|
}`:dedent`/**
|
75
75
|
* This function is used to resolve the absolute path of a package.
|
76
76
|
* It is needed in projects that use Yarn PnP or are set up within a monorepo.
|
77
|
-
*/
|
77
|
+
*/
|
78
78
|
function getAbsolutePath(value: string): any {
|
79
79
|
return dirname(require.resolve(join(value, 'package.json')))
|
80
80
|
}`]:[];await configureMain({framework:{name:frameworkInclude,options:options.framework||{}},prefixes,storybookConfigFolder,addons:shouldApplyRequireWrapperOnPackageNames?addons.map(addon=>applyRequireWrapper(addon)):addons,extensions,language,...staticDir?{staticDirs:[join("..",staticDir)]}:null,...extraMain,...type!=="framework"?{core:{builder:builderInclude}}:{}});}if(await configurePreview({frameworkPreviewParts,storybookConfigFolder,language,rendererId}),addScripts&&await packageManager.addStorybookCommandInScripts({port:6006}),addComponents){let templateLocation=hasFrameworkTemplates(framework)?framework:rendererId;if(!templateLocation)throw new Error(`Could not find template location for ${framework} or ${rendererId}`);await copyTemplateFiles({renderer:templateLocation,packageManager,language,destination:componentsDestinationPath,commonAssetsDir:join(getCliDir(),"rendererAssets","common")});}}function getCliDir(){return dirname(__require.resolve("create-storybook/package.json"))}var generator=async(packageManager,npmOptions,options,commandOptions)=>{let angularJSON=new AngularJSON;if(!angularJSON.projects||angularJSON.projects&&Object.keys(angularJSON.projects).length===0)throw new Error("Storybook was not able to find any projects in your angular.json file. Are you sure this is an Angular CLI project?");if(angularJSON.projectsWithoutStorybook.length===0)throw new Error("Every project in your workspace is already set up with Storybook. There is nothing to do!");let angularProjectName=await angularJSON.getProjectName();commandLog(`Adding Storybook support to your "${angularProjectName}" project`);let angularProject=angularJSON.getProjectSettingsByName(angularProjectName);if(!angularProject)throw new Error(`Somehow we were not able to retrieve the "${angularProjectName}" project in your angular.json file. This is likely a bug in Storybook, please file an issue.`);let{root,projectType}=angularProject,{projects}=angularJSON,useCompodoc=commandOptions?.yes?!0:await promptForCompoDocs(),storybookFolder=root?`${root}/.storybook`:".storybook";angularJSON.addStorybookEntries({angularProjectName,storybookFolder,useCompodoc,root}),angularJSON.write(),await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Webpack5,...useCompodoc&&{frameworkPreviewParts:{prefix:compoDocPreviewPrefix}}},"angular",{extraAddons:["@storybook/addon-onboarding"],...useCompodoc&&{extraPackages:["@compodoc/compodoc","@storybook/addon-docs"]},addScripts:!1,componentsDestinationPath:root?`${root}/src/stories`:void 0,storybookConfigFolder:storybookFolder,webpackCompiler:()=>{}},"angular"),Object.keys(projects).length===1&&packageManager.addScripts({storybook:`ng run ${angularProjectName}:storybook`,"build-storybook":`ng run ${angularProjectName}:build-storybook`});let projectTypeValue=projectType||"application";projectTypeValue!=="application"&&projectTypeValue!=="library"&&(projectTypeValue="application");let templateDir=join(getCliDir(),"templates","angular",projectTypeValue);return templateDir&©Template(templateDir,root||void 0),{projectName:angularProjectName,configDir:storybookFolder}},ANGULAR_default=generator;var generator2=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Webpack5},"ember",{staticDir:"dist"},"ember");},EMBER_default=generator2;var generator3=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"html",{webpackCompiler:({builder})=>builder===CoreBuilder.Webpack5?"swc":void 0});},HTML_default=generator3;var generator4=async(packageManager,npmOptions,options)=>{let staticDir;existsSync(join(process.cwd(),"public"))&&(staticDir="public"),await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Webpack5},"react",{staticDir,extraAddons:["@storybook/addon-onboarding"],webpackCompiler:({builder})=>{}},"nextjs");},NEXTJS_default=generator4;var generator5=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"preact",{webpackCompiler:({builder})=>builder===CoreBuilder.Webpack5?"swc":void 0});},PREACT_default=generator5;var generator6=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"qwik",{},"qwik");},QWIK_default=generator6;var generator7=async(packageManager,npmOptions,options)=>{let extraPackages=await detectLanguage(packageManager)===SupportedLanguage.JAVASCRIPT?["prop-types"]:[];await baseGenerator(packageManager,npmOptions,options,"react",{extraPackages,webpackCompiler:({builder})=>builder===CoreBuilder.Webpack5?"swc":void 0,extraAddons:["@storybook/addon-onboarding"]});},REACT_default=generator7;var generator8=async(packageManager,npmOptions)=>{let packageJson=await packageManager.retrievePackageJson(),missingReactDom=!packageJson.dependencies["react-dom"]&&!packageJson.devDependencies["react-dom"],reactVersion=packageJson.dependencies.react,packagesToResolve=[...["react-native-safe-area-context","@react-native-async-storage/async-storage","@react-native-community/datetimepicker","@react-native-community/slider","react-native-reanimated","react-native-gesture-handler","@gorhom/bottom-sheet","react-native-svg"].filter(dep=>!packageJson.dependencies[dep]&&!packageJson.devDependencies[dep]),"@storybook/addon-ondevice-controls","@storybook/addon-ondevice-actions","@storybook/react-native"],packagesWithFixedVersion=[],versionedPackages=await packageManager.getVersionedPackages(packagesToResolve),babelDependencies=await getBabelDependencies(packageManager,packageJson),packages=[];packages.push(...babelDependencies),packages.push(...packagesWithFixedVersion),packages.push(...versionedPackages),missingReactDom&&reactVersion&&packages.push(`react-dom@${reactVersion}`),await packageManager.addDependencies({...npmOptions,packageJson},packages),packageManager.addScripts({"storybook-generate":"sb-rn-get-stories"}),await copyTemplateFiles({packageManager,renderer:"react-native",language:SupportedLanguage.TYPESCRIPT_4_9,destination:".storybook"});},REACT_NATIVE_default=generator8;var generator9=async(packageManager,npmOptions,options)=>{let monorepoRootPath=join(__dirname,"..","..","..","..","..",".."),extraMain=options.linkable?{webpackFinal:`%%(config) => {
|
@@ -93,7 +93,7 @@ var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropD
|
|
93
93
|
Storybook 7.0+ doesn't support react-scripts@<5.0.0.
|
94
94
|
|
95
95
|
https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#create-react-app-dropped-cra4-support
|
96
|
-
`);let extraPackages=[];extraPackages.push("webpack"),extraPackages.push("prop-types");let extraAddons=["@storybook/preset-create-react-app","@storybook/addon-onboarding"];await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Webpack5},"react",{webpackCompiler:()=>{},extraAddons,extraPackages,staticDir:existsSync(resolve("./public"))?"public":void 0,extraMain});},REACT_SCRIPTS_default=generator9;var generator10=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Webpack5},"server",{webpackCompiler:()=>"swc",extensions:["json","yaml","yml"]});},SERVER_default=generator10;var generator11=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Vite},"solid",{},"solid");},SOLID_default=generator11;var getAddonSvelteCsfVersion=async packageManager=>{let svelteVersion=await getVersionSafe(packageManager,"svelte");try{let svelteMajor=major(svelteVersion??"");if(svelteMajor===4)return "4";if(svelteMajor===5)return "^5.0.0-next.0"}catch{}return ""},generator12=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,options,"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]});},SVELTE_default=generator12;var generator13=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Vite},"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]},"sveltekit");},SVELTEKIT_default=generator13;var generator14=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"vue3",{extraAddons:["@storybook/addon-onboarding"],extraPackages:async({builder})=>builder===CoreBuilder.Webpack5?["vue-loader@^17.0.0","@vue/compiler-sfc@^3.2.0"]:[],webpackCompiler:({builder})=>builder===CoreBuilder.Webpack5?"swc":void 0});},VUE3_default=generator14;var generator15=async(packageManager,npmOptions,options)=>baseGenerator(packageManager,npmOptions,options,"web-components",{extraPackages:["lit"],webpackCompiler:({builder})=>builder===CoreBuilder.Webpack5?"swc":void 0}),WEB_COMPONENTS_default=generator15;var generator16=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"react",{extraAddons:["@storybook/addon-onboarding"],webpackCompiler:({builder})=>builder===CoreBuilder.Webpack5?"swc":void 0});},WEBPACK_REACT_default=generator16;var import_picocolors=__toESM(require_picocolors(),1);var SUPPORTED_PROJECTS={"react-vite-ts":{displayName:{type:"React",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template react-ts",yarn:"yarn create vite@latest . --template react-ts",pnpm:"pnpm create vite@latest . --template react-ts"}},"nextjs-ts":{displayName:{type:"Next.js",language:"TS"},createScript:{npm:'npm create next-app . -- --typescript --use-npm --eslint --tailwind --no-app --import-alias="@/*" --src-dir',yarn:'
|
96
|
+
`);let extraPackages=[];extraPackages.push("webpack"),extraPackages.push("prop-types");let extraAddons=["@storybook/preset-create-react-app","@storybook/addon-onboarding"];await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Webpack5},"react",{webpackCompiler:()=>{},extraAddons,extraPackages,staticDir:existsSync(resolve("./public"))?"public":void 0,extraMain});},REACT_SCRIPTS_default=generator9;var generator10=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Webpack5},"server",{webpackCompiler:()=>"swc",extensions:["json","yaml","yml"]});},SERVER_default=generator10;var generator11=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Vite},"solid",{},"solid");},SOLID_default=generator11;var getAddonSvelteCsfVersion=async packageManager=>{let svelteVersion=await getVersionSafe(packageManager,"svelte");try{let svelteMajor=major(svelteVersion??"");if(svelteMajor===4)return "4";if(svelteMajor===5)return "^5.0.0-next.0"}catch{}return ""},generator12=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,options,"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]});},SVELTE_default=generator12;var generator13=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Vite},"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]},"sveltekit");},SVELTEKIT_default=generator13;var generator14=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"vue3",{extraAddons:["@storybook/addon-onboarding"],extraPackages:async({builder})=>builder===CoreBuilder.Webpack5?["vue-loader@^17.0.0","@vue/compiler-sfc@^3.2.0"]:[],webpackCompiler:({builder})=>builder===CoreBuilder.Webpack5?"swc":void 0});},VUE3_default=generator14;var generator15=async(packageManager,npmOptions,options)=>baseGenerator(packageManager,npmOptions,options,"web-components",{extraPackages:["lit"],webpackCompiler:({builder})=>builder===CoreBuilder.Webpack5?"swc":void 0}),WEB_COMPONENTS_default=generator15;var generator16=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"react",{extraAddons:["@storybook/addon-onboarding"],webpackCompiler:({builder})=>builder===CoreBuilder.Webpack5?"swc":void 0});},WEBPACK_REACT_default=generator16;var import_picocolors=__toESM(require_picocolors(),1);var SUPPORTED_PROJECTS={"react-vite-ts":{displayName:{type:"React",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template react-ts",yarn:"yarn create vite@latest . --template react-ts",pnpm:"pnpm create vite@latest . --template react-ts"}},"nextjs-ts":{displayName:{type:"Next.js",language:"TS"},createScript:{npm:'npm create next-app@^14 . -- --typescript --use-npm --eslint --tailwind --no-app --import-alias="@/*" --src-dir',yarn:'npx create-next-app@^14 . --typescript --use-yarn --eslint --tailwind --no-app --import-alias="@/*" --src-dir',pnpm:'pnpm create next-app^14 . --typescript --use-pnpm --eslint --tailwind --no-app --import-alias="@/*" --src-dir'}},"vue-vite-ts":{displayName:{type:"Vue 3",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template vue-ts",yarn:"yarn create vite@latest . --template vue-ts",pnpm:"pnpm create vite@latest . --template vue-ts"}},"angular-cli":{displayName:{type:"Angular",language:"TS"},createScript:{npm:"npx -p @angular/cli@latest ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --skip-install",yarn:"yarn dlx -p @angular/cli ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --package-manager=yarn --skip-install && touch yarn.lock && yarn set version berry && yarn config set nodeLinker node-modules",pnpm:"pnpm --package @angular/cli dlx ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --package-manager=pnpm --skip-install"}},"lit-vite-ts":{displayName:{type:"Lit",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template lit-ts",yarn:"yarn create vite@latest . --template lit-ts && touch yarn.lock && yarn set version berry && yarn config set nodeLinker pnp",pnpm:"pnpm create vite@latest . --template lit-ts"}}},packageManagerToCoercedName=packageManager=>{switch(packageManager){case"npm":return "npm";case"pnpm":return "pnpm";default:return "yarn"}},buildProjectDisplayNameForPrint=({displayName})=>{let{type,builder,language}=displayName;return `${import_picocolors.default.bold(import_picocolors.default.blue(type))} ${builder?`+ ${builder} `:""}(${language})`},scaffoldNewProject=async(packageManager,{disableTelemetry})=>{let packageManagerName=packageManagerToCoercedName(packageManager);logger.plain(boxen(dedent`
|
97
97
|
Would you like to generate a new project from the following list?
|
98
98
|
|
99
99
|
${import_picocolors.default.bold("Note:")}
|
@@ -105,7 +105,7 @@ var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropD
|
|
105
105
|
"${projectDisplayName}" project with ${import_picocolors.default.bold(packageManagerName)} created successfully!
|
106
106
|
|
107
107
|
Continuing with Storybook installation...
|
108
|
-
`,{title:import_picocolors.default.bold("\u2705 Success!"),padding:1,borderStyle:"double",borderColor:"green"})),logger.line(1);},BASE_IGNORED_FILES=[".git",".gitignore",".DS_Store",".cache"],IGNORED_FILES_BY_PACKAGE_MANAGER={npm:[...BASE_IGNORED_FILES],yarn:[...BASE_IGNORED_FILES,".yarnrc.yml",".yarn"],pnpm:[...BASE_IGNORED_FILES]},currentDirectoryIsEmpty=packageManager=>{let packageManagerName=packageManagerToCoercedName(packageManager),cwdFolderEntries=readdirSync(process.cwd()),filesToIgnore=IGNORED_FILES_BY_PACKAGE_MANAGER[packageManagerName];return cwdFolderEntries.length===0||cwdFolderEntries.every(entry=>filesToIgnore.includes(entry))};var logger4=console,installStorybook=async(projectType,packageManager,options)=>{let npmOptions={installAsDevDependencies:!0,skipInstall:options.skipInstall},language=await detectLanguage(packageManager),pnp=await detectPnp(),generatorOptions={language,builder:options.builder,linkable:!!options.linkable,pnp:pnp||options.usePnp,yes:options.yes,projectType},runGenerator=async()=>{switch(projectType){case ProjectType.REACT_SCRIPTS:return REACT_SCRIPTS_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Create React App" based project'));case ProjectType.REACT:return REACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "React" app'));case ProjectType.REACT_NATIVE:return REACT_NATIVE_default(packageManager,npmOptions).then(commandLog('Adding Storybook support to your "React Native" app'));case ProjectType.QWIK:return QWIK_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Qwik" app'));case ProjectType.WEBPACK_REACT:return WEBPACK_REACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Webpack React" app'));case ProjectType.REACT_PROJECT:return REACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "React" library'));case ProjectType.NEXTJS:return NEXTJS_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Next" app'));case ProjectType.VUE3:return VUE3_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Vue 3" app'));case ProjectType.ANGULAR:return commandLog('Adding Storybook support to your "Angular" app'),ANGULAR_default(packageManager,npmOptions,generatorOptions,options);case ProjectType.EMBER:return EMBER_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Ember" app'));case ProjectType.HTML:return HTML_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "HTML" app'));case ProjectType.WEB_COMPONENTS:return WEB_COMPONENTS_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "web components" app'));case ProjectType.PREACT:return PREACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Preact" app'));case ProjectType.SVELTE:return SVELTE_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Svelte" app'));case ProjectType.SVELTEKIT:return SVELTEKIT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "SvelteKit" app'));case ProjectType.SERVER:return SERVER_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Server" app'));case ProjectType.NX:throw new NxProjectDetectedError;case ProjectType.SOLID:return SOLID_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "SolidJS" app'));case ProjectType.UNSUPPORTED:return paddedLog("We detected a project type that we don't support yet."),paddedLog("If you'd like your framework to be supported, please let use know about it at https://github.com/storybookjs/storybook/issues"),logger4.log(),Promise.resolve();default:return paddedLog(`We couldn't detect your project type. (code: ${projectType})`),paddedLog("You can specify a project type explicitly via `storybook init --type <type>`, see our docs on how to configure Storybook for your framework: https://storybook.js.org/docs/
|
108
|
+
`,{title:import_picocolors.default.bold("\u2705 Success!"),padding:1,borderStyle:"double",borderColor:"green"})),logger.line(1);},BASE_IGNORED_FILES=[".git",".gitignore",".DS_Store",".cache"],IGNORED_FILES_BY_PACKAGE_MANAGER={npm:[...BASE_IGNORED_FILES],yarn:[...BASE_IGNORED_FILES,".yarnrc.yml",".yarn"],pnpm:[...BASE_IGNORED_FILES]},currentDirectoryIsEmpty=packageManager=>{let packageManagerName=packageManagerToCoercedName(packageManager),cwdFolderEntries=readdirSync(process.cwd()),filesToIgnore=IGNORED_FILES_BY_PACKAGE_MANAGER[packageManagerName];return cwdFolderEntries.length===0||cwdFolderEntries.every(entry=>filesToIgnore.includes(entry))};var logger4=console,installStorybook=async(projectType,packageManager,options)=>{let npmOptions={installAsDevDependencies:!0,skipInstall:options.skipInstall},language=await detectLanguage(packageManager),pnp=await detectPnp(),generatorOptions={language,builder:options.builder,linkable:!!options.linkable,pnp:pnp||options.usePnp,yes:options.yes,projectType},runGenerator=async()=>{switch(projectType){case ProjectType.REACT_SCRIPTS:return REACT_SCRIPTS_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Create React App" based project'));case ProjectType.REACT:return REACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "React" app'));case ProjectType.REACT_NATIVE:return REACT_NATIVE_default(packageManager,npmOptions).then(commandLog('Adding Storybook support to your "React Native" app'));case ProjectType.QWIK:return QWIK_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Qwik" app'));case ProjectType.WEBPACK_REACT:return WEBPACK_REACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Webpack React" app'));case ProjectType.REACT_PROJECT:return REACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "React" library'));case ProjectType.NEXTJS:return NEXTJS_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Next" app'));case ProjectType.VUE3:return VUE3_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Vue 3" app'));case ProjectType.ANGULAR:return commandLog('Adding Storybook support to your "Angular" app'),ANGULAR_default(packageManager,npmOptions,generatorOptions,options);case ProjectType.EMBER:return EMBER_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Ember" app'));case ProjectType.HTML:return HTML_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "HTML" app'));case ProjectType.WEB_COMPONENTS:return WEB_COMPONENTS_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "web components" app'));case ProjectType.PREACT:return PREACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Preact" app'));case ProjectType.SVELTE:return SVELTE_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Svelte" app'));case ProjectType.SVELTEKIT:return SVELTEKIT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "SvelteKit" app'));case ProjectType.SERVER:return SERVER_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Server" app'));case ProjectType.NX:throw new NxProjectDetectedError;case ProjectType.SOLID:return SOLID_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "SolidJS" app'));case ProjectType.UNSUPPORTED:return paddedLog("We detected a project type that we don't support yet."),paddedLog("If you'd like your framework to be supported, please let use know about it at https://github.com/storybookjs/storybook/issues"),logger4.log(),Promise.resolve();default:return paddedLog(`We couldn't detect your project type. (code: ${projectType})`),paddedLog("You can specify a project type explicitly via `storybook init --type <type>`, see our docs on how to configure Storybook for your framework: https://storybook.js.org/docs/get-started/install"),logger4.log(),projectTypeInquirer(options,packageManager)}};try{return await runGenerator()}catch(err){throw err?.message!=="Canceled by the user"&&err?.stack&&logger4.error(`
|
109
109
|
${import_picocolors2.default.red(err.stack)}`),new HandledError(err)}},projectTypeInquirer=async(options,packageManager)=>{let manualAnswer=options.yes?!0:await prompts2([{type:"confirm",name:"manual",message:"Do you want to manually choose a Storybook project type to install?"}]);if(manualAnswer!==!0&&manualAnswer.manual){let{manualFramework}=await prompts2([{type:"select",name:"manualFramework",message:"Please choose a project type from the following list:",choices:installableProjectTypes.map(type=>({title:type,value:type.toUpperCase()}))}]);if(manualFramework)return installStorybook(manualFramework,packageManager,options)}logger4.log(),logger4.log("For more information about installing Storybook: https://storybook.js.org/docs"),process.exit(0);};async function doInitiate(options){let{packageManager:pkgMgr}=options,packageManager=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),latestVersion=await packageManager.latestVersion("storybook"),currentVersion=versions.storybook,isPrerelease=prerelease(currentVersion),isOutdated=lt(currentVersion,latestVersion),borderColor=isOutdated?"#FC521F":"#F1618C",messages={welcome:`Adding Storybook version ${import_picocolors2.default.bold(currentVersion)} to your project..`,notLatest:import_picocolors2.default.red(dedent`
|
110
110
|
This version is behind the latest release, which is: ${import_picocolors2.default.bold(latestVersion)}!
|
111
111
|
You likely ran the init command through npx, which can use a locally cached version, to get the latest please run:
|
package/dist/index.cjs
CHANGED
@@ -41,20 +41,20 @@
|
|
41
41
|
`,"").trim();try{let prettier=(await import("prettier")).default;preview=await prettier.format(preview,{...await prettier.resolveConfig(previewPath),filepath:previewPath})}catch{import_node_logger.logger.verbose(`Failed to prettify ${previewPath}`)}await(0,import_promises.writeFile)(previewPath,preview,{encoding:"utf8"})}var logger2=console,defaultOptions={extraPackages:[],extraAddons:[],staticDir:void 0,addScripts:!0,addMainFile:!0,addComponents:!0,webpackCompiler:()=>{},extraMain:void 0,framework:void 0,extensions:void 0,componentsDestinationPath:void 0,storybookConfigFolder:".storybook"},getBuilderDetails=builder=>{let map=import_common.versions;if(map[builder])return builder;let builderPackage=`@storybook/${builder}`;return map[builderPackage]?builderPackage:builder},getExternalFramework=framework=>import_cli2.externalFrameworks.find(exFramework=>framework!==void 0&&(exFramework.name===framework||exFramework.packageName===framework||exFramework?.frameworks?.some?.(item=>item===framework))),getFrameworkPackage=(framework,renderer,builder)=>{let externalFramework=getExternalFramework(framework),storybookBuilder=builder?.replace(/^@storybook\/builder-/,""),storybookFramework=framework?.replace(/^@storybook\//,"");if(externalFramework===void 0){let frameworkPackage=framework?`@storybook/${storybookFramework}`:`@storybook/${renderer}-${storybookBuilder}`;if(import_common.versions[frameworkPackage])return frameworkPackage;throw new Error(import_ts_dedent2.dedent`
|
42
42
|
Could not find framework package: ${frameworkPackage}.
|
43
43
|
Make sure this package exists, and if it does, please file an issue as this might be a bug in Storybook.
|
44
|
-
`)}return externalFramework.frameworks!==void 0?externalFramework.frameworks.find(item=>item.match(new RegExp(`-${storybookBuilder}`))):externalFramework.packageName},getRendererPackage=(framework,renderer)=>{let externalFramework=getExternalFramework(framework);return externalFramework!==void 0?externalFramework.renderer||externalFramework.packageName:`@storybook/${renderer}`},applyRequireWrapper=packageName=>`%%getAbsolutePath('${packageName}')%%`,getFrameworkDetails=(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames)=>{let frameworkPackage=getFrameworkPackage(framework,renderer,builder);(0,import_tiny_invariant.default)(frameworkPackage,"Missing framework package.");let frameworkPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(frameworkPackage):frameworkPackage,rendererPackage=getRendererPackage(framework,renderer),rendererPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(rendererPackage):rendererPackage,builderPackage=getBuilderDetails(builder),builderPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(builderPackage):builderPackage,isKnownFramework=!!getExternalFramework(frameworkPackage)||!!import_common.versions[frameworkPackage],isKnownRenderer=!!import_common.versions[rendererPackage];if(isKnownFramework)return{packages:[rendererPackage,frameworkPackage],framework:frameworkPackagePath,rendererId:renderer,type:"framework"};if(isKnownRenderer)return{packages:[rendererPackage,builderPackage],builder:builderPackagePath,renderer:rendererPackagePath,rendererId:renderer,type:"renderer"};throw new Error(`Could not find the framework (${frameworkPackage}) or renderer (${rendererPackage}) package`)},stripVersions=addons=>addons.map(addon=>(0,import_common.getPackageDetails)(addon)[0]),hasInteractiveStories=rendererId=>["react","angular","preact","svelte","vue3","html","solid","qwik"].includes(rendererId),hasFrameworkTemplates=framework=>framework?["angular","nextjs"].includes(framework):!1;async function baseGenerator(packageManager,npmOptions,{language,builder,pnp,frameworkPreviewParts,projectType},renderer,options=defaultOptions,framework){let shouldApplyRequireWrapperOnPackageNames=packageManager.isStorybookInMonorepo()||pnp;builder||(builder=await(0,import_cli5.detectBuilder)(packageManager,projectType));let{packages:frameworkPackages,type,rendererId,framework:frameworkInclude,builder:builderInclude}=getFrameworkDetails(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames),{extraAddons:extraAddonPackages=[],extraPackages,staticDir,addScripts,addMainFile,addComponents,extraMain,extensions,storybookConfigFolder,componentsDestinationPath,webpackCompiler}={...defaultOptions,...options},compiler=webpackCompiler?webpackCompiler({builder}):void 0,extraAddonsToInstall=typeof extraAddonPackages=="function"?await extraAddonPackages({builder:builder||builderInclude,framework:framework||frameworkInclude}):extraAddonPackages;extraAddonsToInstall.push("@storybook/addon-essentials","@chromatic-com/storybook@^
|
44
|
+
`)}return externalFramework.frameworks!==void 0?externalFramework.frameworks.find(item=>item.match(new RegExp(`-${storybookBuilder}`))):externalFramework.packageName},getRendererPackage=(framework,renderer)=>{let externalFramework=getExternalFramework(framework);return externalFramework!==void 0?externalFramework.renderer||externalFramework.packageName:`@storybook/${renderer}`},applyRequireWrapper=packageName=>`%%getAbsolutePath('${packageName}')%%`,getFrameworkDetails=(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames)=>{let frameworkPackage=getFrameworkPackage(framework,renderer,builder);(0,import_tiny_invariant.default)(frameworkPackage,"Missing framework package.");let frameworkPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(frameworkPackage):frameworkPackage,rendererPackage=getRendererPackage(framework,renderer),rendererPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(rendererPackage):rendererPackage,builderPackage=getBuilderDetails(builder),builderPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(builderPackage):builderPackage,isKnownFramework=!!getExternalFramework(frameworkPackage)||!!import_common.versions[frameworkPackage],isKnownRenderer=!!import_common.versions[rendererPackage];if(isKnownFramework)return{packages:[rendererPackage,frameworkPackage],framework:frameworkPackagePath,rendererId:renderer,type:"framework"};if(isKnownRenderer)return{packages:[rendererPackage,builderPackage],builder:builderPackagePath,renderer:rendererPackagePath,rendererId:renderer,type:"renderer"};throw new Error(`Could not find the framework (${frameworkPackage}) or renderer (${rendererPackage}) package`)},stripVersions=addons=>addons.map(addon=>(0,import_common.getPackageDetails)(addon)[0]),hasInteractiveStories=rendererId=>["react","angular","preact","svelte","vue3","html","solid","qwik"].includes(rendererId),hasFrameworkTemplates=framework=>framework?["angular","nextjs"].includes(framework):!1;async function baseGenerator(packageManager,npmOptions,{language,builder,pnp,frameworkPreviewParts,projectType},renderer,options=defaultOptions,framework){let shouldApplyRequireWrapperOnPackageNames=packageManager.isStorybookInMonorepo()||pnp;builder||(builder=await(0,import_cli5.detectBuilder)(packageManager,projectType));let{packages:frameworkPackages,type,rendererId,framework:frameworkInclude,builder:builderInclude}=getFrameworkDetails(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames),{extraAddons:extraAddonPackages=[],extraPackages,staticDir,addScripts,addMainFile,addComponents,extraMain,extensions,storybookConfigFolder,componentsDestinationPath,webpackCompiler}={...defaultOptions,...options},compiler=webpackCompiler?webpackCompiler({builder}):void 0,extraAddonsToInstall=typeof extraAddonPackages=="function"?await extraAddonPackages({builder:builder||builderInclude,framework:framework||frameworkInclude}):extraAddonPackages;extraAddonsToInstall.push("@storybook/addon-essentials","@chromatic-com/storybook@^3");let addons=[...compiler?[`@storybook/addon-webpack5-compiler-${compiler}`]:[],...stripVersions(extraAddonsToInstall)].filter(Boolean),addonPackages=["@storybook/blocks",...compiler?[`@storybook/addon-webpack5-compiler-${compiler}`]:[],...extraAddonsToInstall].filter(Boolean);["solid","qwik"].includes(rendererId)?addonPackages.push("@storybook/testing-library"):addonPackages.push("@storybook/test"),hasInteractiveStories(rendererId)&&(addons.push("@storybook/addon-interactions"),addonPackages.push("@storybook/addon-interactions"));let packageJson=await packageManager.retrievePackageJson(),installedDependencies=new Set(Object.keys({...packageJson.dependencies,...packageJson.devDependencies}));if(type==="renderer")throw new Error(import_ts_dedent2.dedent`
|
45
45
|
Sorry, for now, you can not do this, please use a framework such as @storybook/react-webpack5
|
46
46
|
|
47
47
|
https://github.com/storybookjs/storybook/issues/18360
|
48
48
|
`);let extraPackagesToInstall=typeof extraPackages=="function"?await extraPackages({builder:builder||builderInclude,framework:framework||frameworkInclude}):extraPackages,allPackages=["storybook",getExternalFramework(rendererId)?void 0:`@storybook/${rendererId}`,...frameworkPackages,...addonPackages,...extraPackagesToInstall||[]].filter(Boolean),packages=[...new Set(allPackages)].filter(packageToInstall=>!installedDependencies.has((0,import_common.getPackageDetails)(packageToInstall)[0]));logger2.log();let versionedPackagesSpinner=(0,import_ora.default)({indent:2,text:`Getting the correct version of ${packages.length} packages`}).start(),versionedPackages=await packageManager.getVersionedPackages(packages);versionedPackagesSpinner.succeed();try{if(process.env.CI!=="true"){let{hasEslint,isStorybookPluginInstalled,eslintConfigFile}=await(0,import_cli4.extractEslintInfo)(packageManager);hasEslint&&!isStorybookPluginInstalled&&(versionedPackages.push("eslint-plugin-storybook"),await(0,import_cli4.configureEslintPlugin)(eslintConfigFile??void 0,packageManager))}}catch{}if(versionedPackages.length>0){let addDependenciesSpinner=(0,import_ora.default)({indent:2,text:"Installing Storybook dependencies"}).start();await packageManager.addDependencies({...npmOptions,packageJson},versionedPackages),addDependenciesSpinner.succeed()}if(await(0,import_promises2.mkdir)(`./${storybookConfigFolder}`,{recursive:!0}),addMainFile){let prefixes=shouldApplyRequireWrapperOnPackageNames?['import { join, dirname } from "path"',language===import_cli2.SupportedLanguage.JAVASCRIPT?import_ts_dedent2.dedent`/**
|
49
49
|
* This function is used to resolve the absolute path of a package.
|
50
50
|
* It is needed in projects that use Yarn PnP or are set up within a monorepo.
|
51
|
-
*/
|
51
|
+
*/
|
52
52
|
function getAbsolutePath(value) {
|
53
53
|
return dirname(require.resolve(join(value, 'package.json')))
|
54
54
|
}`:import_ts_dedent2.dedent`/**
|
55
55
|
* This function is used to resolve the absolute path of a package.
|
56
56
|
* It is needed in projects that use Yarn PnP or are set up within a monorepo.
|
57
|
-
*/
|
57
|
+
*/
|
58
58
|
function getAbsolutePath(value: string): any {
|
59
59
|
return dirname(require.resolve(join(value, 'package.json')))
|
60
60
|
}`]:[];await configureMain({framework:{name:frameworkInclude,options:options.framework||{}},prefixes,storybookConfigFolder,addons:shouldApplyRequireWrapperOnPackageNames?addons.map(addon=>applyRequireWrapper(addon)):addons,extensions,language,...staticDir?{staticDirs:[(0,import_node_path2.join)("..",staticDir)]}:null,...extraMain,...type!=="framework"?{core:{builder:builderInclude}}:{}})}if(await configurePreview({frameworkPreviewParts,storybookConfigFolder,language,rendererId}),addScripts&&await packageManager.addStorybookCommandInScripts({port:6006}),addComponents){let templateLocation=hasFrameworkTemplates(framework)?framework:rendererId;if(!templateLocation)throw new Error(`Could not find template location for ${framework} or ${rendererId}`);await(0,import_cli3.copyTemplateFiles)({renderer:templateLocation,packageManager,language,destination:componentsDestinationPath,commonAssetsDir:(0,import_node_path2.join)(getCliDir(),"rendererAssets","common")})}}function getCliDir(){return(0,import_node_path2.dirname)(require.resolve("create-storybook/package.json"))}var generator=async(packageManager,npmOptions,options,commandOptions)=>{let angularJSON=new import_cli7.AngularJSON;if(!angularJSON.projects||angularJSON.projects&&Object.keys(angularJSON.projects).length===0)throw new Error("Storybook was not able to find any projects in your angular.json file. Are you sure this is an Angular CLI project?");if(angularJSON.projectsWithoutStorybook.length===0)throw new Error("Every project in your workspace is already set up with Storybook. There is nothing to do!");let angularProjectName=await angularJSON.getProjectName();(0,import_common2.commandLog)(`Adding Storybook support to your "${angularProjectName}" project`);let angularProject=angularJSON.getProjectSettingsByName(angularProjectName);if(!angularProject)throw new Error(`Somehow we were not able to retrieve the "${angularProjectName}" project in your angular.json file. This is likely a bug in Storybook, please file an issue.`);let{root,projectType}=angularProject,{projects}=angularJSON,useCompodoc=commandOptions?.yes?!0:await(0,import_cli7.promptForCompoDocs)(),storybookFolder=root?`${root}/.storybook`:".storybook";angularJSON.addStorybookEntries({angularProjectName,storybookFolder,useCompodoc,root}),angularJSON.write(),await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli6.CoreBuilder.Webpack5,...useCompodoc&&{frameworkPreviewParts:{prefix:import_cli7.compoDocPreviewPrefix}}},"angular",{extraAddons:["@storybook/addon-onboarding"],...useCompodoc&&{extraPackages:["@compodoc/compodoc","@storybook/addon-docs"]},addScripts:!1,componentsDestinationPath:root?`${root}/src/stories`:void 0,storybookConfigFolder:storybookFolder,webpackCompiler:()=>{}},"angular"),Object.keys(projects).length===1&&packageManager.addScripts({storybook:`ng run ${angularProjectName}:storybook`,"build-storybook":`ng run ${angularProjectName}:build-storybook`});let projectTypeValue=projectType||"application";projectTypeValue!=="application"&&projectTypeValue!=="library"&&(projectTypeValue="application");let templateDir=(0,import_node_path3.join)(getCliDir(),"templates","angular",projectTypeValue);return templateDir&&(0,import_cli8.copyTemplate)(templateDir,root||void 0),{projectName:angularProjectName,configDir:storybookFolder}},ANGULAR_default=generator;var import_cli9=require("storybook/internal/cli");var generator2=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli9.CoreBuilder.Webpack5},"ember",{staticDir:"dist"},"ember")},EMBER_default=generator2;var import_cli10=require("storybook/internal/cli");var generator3=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"html",{webpackCompiler:({builder})=>builder===import_cli10.CoreBuilder.Webpack5?"swc":void 0})},HTML_default=generator3;var import_node_fs=require("fs"),import_node_path4=require("path"),import_cli11=require("storybook/internal/cli");var generator4=async(packageManager,npmOptions,options)=>{let staticDir;(0,import_node_fs.existsSync)((0,import_node_path4.join)(process.cwd(),"public"))&&(staticDir="public"),await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli11.CoreBuilder.Webpack5},"react",{staticDir,extraAddons:["@storybook/addon-onboarding"],webpackCompiler:({builder})=>{}},"nextjs")},NEXTJS_default=generator4;var import_cli12=require("storybook/internal/cli");var generator5=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"preact",{webpackCompiler:({builder})=>builder===import_cli12.CoreBuilder.Webpack5?"swc":void 0})},PREACT_default=generator5;var generator6=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"qwik",{},"qwik")},QWIK_default=generator6;var import_cli13=require("storybook/internal/cli"),import_cli14=require("storybook/internal/cli");var generator7=async(packageManager,npmOptions,options)=>{let extraPackages=await(0,import_cli13.detectLanguage)(packageManager)===import_cli14.SupportedLanguage.JAVASCRIPT?["prop-types"]:[];await baseGenerator(packageManager,npmOptions,options,"react",{extraPackages,webpackCompiler:({builder})=>builder===import_cli14.CoreBuilder.Webpack5?"swc":void 0,extraAddons:["@storybook/addon-onboarding"]})},REACT_default=generator7;var import_cli15=require("storybook/internal/cli"),import_cli16=require("storybook/internal/cli"),generator8=async(packageManager,npmOptions)=>{let packageJson=await packageManager.retrievePackageJson(),missingReactDom=!packageJson.dependencies["react-dom"]&&!packageJson.devDependencies["react-dom"],reactVersion=packageJson.dependencies.react,packagesToResolve=[...["react-native-safe-area-context","@react-native-async-storage/async-storage","@react-native-community/datetimepicker","@react-native-community/slider","react-native-reanimated","react-native-gesture-handler","@gorhom/bottom-sheet","react-native-svg"].filter(dep=>!packageJson.dependencies[dep]&&!packageJson.devDependencies[dep]),"@storybook/addon-ondevice-controls","@storybook/addon-ondevice-actions","@storybook/react-native"],packagesWithFixedVersion=[],versionedPackages=await packageManager.getVersionedPackages(packagesToResolve),babelDependencies=await(0,import_cli15.getBabelDependencies)(packageManager,packageJson),packages=[];packages.push(...babelDependencies),packages.push(...packagesWithFixedVersion),packages.push(...versionedPackages),missingReactDom&&reactVersion&&packages.push(`react-dom@${reactVersion}`),await packageManager.addDependencies({...npmOptions,packageJson},packages),packageManager.addScripts({"storybook-generate":"sb-rn-get-stories"}),await(0,import_cli15.copyTemplateFiles)({packageManager,renderer:"react-native",language:import_cli16.SupportedLanguage.TYPESCRIPT_4_9,destination:".storybook"})},REACT_NATIVE_default=generator8;var import_node_fs2=require("fs"),import_node_path5=require("path"),import_cli17=require("storybook/internal/cli"),import_semver=__toESM(require("semver"),1),import_ts_dedent3=require("ts-dedent");var generator9=async(packageManager,npmOptions,options)=>{let monorepoRootPath=(0,import_node_path5.join)(__dirname,"..","..","..","..","..",".."),extraMain=options.linkable?{webpackFinal:`%%(config) => {
|
@@ -73,7 +73,7 @@
|
|
73
73
|
Storybook 7.0+ doesn't support react-scripts@<5.0.0.
|
74
74
|
|
75
75
|
https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#create-react-app-dropped-cra4-support
|
76
|
-
`);let extraPackages=[];extraPackages.push("webpack"),extraPackages.push("prop-types");let extraAddons=["@storybook/preset-create-react-app","@storybook/addon-onboarding"];await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli17.CoreBuilder.Webpack5},"react",{webpackCompiler:()=>{},extraAddons,extraPackages,staticDir:(0,import_node_fs2.existsSync)((0,import_node_path5.resolve)("./public"))?"public":void 0,extraMain})},REACT_SCRIPTS_default=generator9;var import_cli18=require("storybook/internal/cli");var generator10=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli18.CoreBuilder.Webpack5},"server",{webpackCompiler:()=>"swc",extensions:["json","yaml","yml"]})},SERVER_default=generator10;var import_cli19=require("storybook/internal/cli");var generator11=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli19.CoreBuilder.Vite},"solid",{},"solid")},SOLID_default=generator11;var import_cli20=require("storybook/internal/cli"),import_semver2=require("semver");var getAddonSvelteCsfVersion=async packageManager=>{let svelteVersion=await(0,import_cli20.getVersionSafe)(packageManager,"svelte");try{let svelteMajor=(0,import_semver2.major)(svelteVersion??"");if(svelteMajor===4)return"4";if(svelteMajor===5)return"^5.0.0-next.0"}catch{}return""},generator12=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,options,"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]})},SVELTE_default=generator12;var import_cli21=require("storybook/internal/cli");var generator13=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli21.CoreBuilder.Vite},"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]},"sveltekit")},SVELTEKIT_default=generator13;var import_cli22=require("storybook/internal/cli");var generator14=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"vue3",{extraAddons:["@storybook/addon-onboarding"],extraPackages:async({builder})=>builder===import_cli22.CoreBuilder.Webpack5?["vue-loader@^17.0.0","@vue/compiler-sfc@^3.2.0"]:[],webpackCompiler:({builder})=>builder===import_cli22.CoreBuilder.Webpack5?"swc":void 0})},VUE3_default=generator14;var import_cli23=require("storybook/internal/cli");var generator15=async(packageManager,npmOptions,options)=>baseGenerator(packageManager,npmOptions,options,"web-components",{extraPackages:["lit"],webpackCompiler:({builder})=>builder===import_cli23.CoreBuilder.Webpack5?"swc":void 0}),WEB_COMPONENTS_default=generator15;var import_cli24=require("storybook/internal/cli");var generator16=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"react",{extraAddons:["@storybook/addon-onboarding"],webpackCompiler:({builder})=>builder===import_cli24.CoreBuilder.Webpack5?"swc":void 0})},WEBPACK_REACT_default=generator16;var import_node_fs3=require("fs"),import_promises3=require("fs/promises"),import_node_logger2=require("storybook/internal/node-logger"),import_server_errors=require("storybook/internal/server-errors"),import_telemetry=require("storybook/internal/telemetry");var import_execa=__toESM(require("execa"),1),import_picocolors=__toESM(require_picocolors(),1),import_prompts=__toESM(require("prompts"),1),import_ts_dedent4=require("ts-dedent"),SUPPORTED_PROJECTS={"react-vite-ts":{displayName:{type:"React",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template react-ts",yarn:"yarn create vite@latest . --template react-ts",pnpm:"pnpm create vite@latest . --template react-ts"}},"nextjs-ts":{displayName:{type:"Next.js",language:"TS"},createScript:{npm:'npm create next-app . -- --typescript --use-npm --eslint --tailwind --no-app --import-alias="@/*" --src-dir',yarn:'
|
76
|
+
`);let extraPackages=[];extraPackages.push("webpack"),extraPackages.push("prop-types");let extraAddons=["@storybook/preset-create-react-app","@storybook/addon-onboarding"];await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli17.CoreBuilder.Webpack5},"react",{webpackCompiler:()=>{},extraAddons,extraPackages,staticDir:(0,import_node_fs2.existsSync)((0,import_node_path5.resolve)("./public"))?"public":void 0,extraMain})},REACT_SCRIPTS_default=generator9;var import_cli18=require("storybook/internal/cli");var generator10=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli18.CoreBuilder.Webpack5},"server",{webpackCompiler:()=>"swc",extensions:["json","yaml","yml"]})},SERVER_default=generator10;var import_cli19=require("storybook/internal/cli");var generator11=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli19.CoreBuilder.Vite},"solid",{},"solid")},SOLID_default=generator11;var import_cli20=require("storybook/internal/cli"),import_semver2=require("semver");var getAddonSvelteCsfVersion=async packageManager=>{let svelteVersion=await(0,import_cli20.getVersionSafe)(packageManager,"svelte");try{let svelteMajor=(0,import_semver2.major)(svelteVersion??"");if(svelteMajor===4)return"4";if(svelteMajor===5)return"^5.0.0-next.0"}catch{}return""},generator12=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,options,"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]})},SVELTE_default=generator12;var import_cli21=require("storybook/internal/cli");var generator13=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli21.CoreBuilder.Vite},"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]},"sveltekit")},SVELTEKIT_default=generator13;var import_cli22=require("storybook/internal/cli");var generator14=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"vue3",{extraAddons:["@storybook/addon-onboarding"],extraPackages:async({builder})=>builder===import_cli22.CoreBuilder.Webpack5?["vue-loader@^17.0.0","@vue/compiler-sfc@^3.2.0"]:[],webpackCompiler:({builder})=>builder===import_cli22.CoreBuilder.Webpack5?"swc":void 0})},VUE3_default=generator14;var import_cli23=require("storybook/internal/cli");var generator15=async(packageManager,npmOptions,options)=>baseGenerator(packageManager,npmOptions,options,"web-components",{extraPackages:["lit"],webpackCompiler:({builder})=>builder===import_cli23.CoreBuilder.Webpack5?"swc":void 0}),WEB_COMPONENTS_default=generator15;var import_cli24=require("storybook/internal/cli");var generator16=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"react",{extraAddons:["@storybook/addon-onboarding"],webpackCompiler:({builder})=>builder===import_cli24.CoreBuilder.Webpack5?"swc":void 0})},WEBPACK_REACT_default=generator16;var import_node_fs3=require("fs"),import_promises3=require("fs/promises"),import_node_logger2=require("storybook/internal/node-logger"),import_server_errors=require("storybook/internal/server-errors"),import_telemetry=require("storybook/internal/telemetry");var import_execa=__toESM(require("execa"),1),import_picocolors=__toESM(require_picocolors(),1),import_prompts=__toESM(require("prompts"),1),import_ts_dedent4=require("ts-dedent"),SUPPORTED_PROJECTS={"react-vite-ts":{displayName:{type:"React",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template react-ts",yarn:"yarn create vite@latest . --template react-ts",pnpm:"pnpm create vite@latest . --template react-ts"}},"nextjs-ts":{displayName:{type:"Next.js",language:"TS"},createScript:{npm:'npm create next-app@^14 . -- --typescript --use-npm --eslint --tailwind --no-app --import-alias="@/*" --src-dir',yarn:'npx create-next-app@^14 . --typescript --use-yarn --eslint --tailwind --no-app --import-alias="@/*" --src-dir',pnpm:'pnpm create next-app^14 . --typescript --use-pnpm --eslint --tailwind --no-app --import-alias="@/*" --src-dir'}},"vue-vite-ts":{displayName:{type:"Vue 3",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template vue-ts",yarn:"yarn create vite@latest . --template vue-ts",pnpm:"pnpm create vite@latest . --template vue-ts"}},"angular-cli":{displayName:{type:"Angular",language:"TS"},createScript:{npm:"npx -p @angular/cli@latest ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --skip-install",yarn:"yarn dlx -p @angular/cli ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --package-manager=yarn --skip-install && touch yarn.lock && yarn set version berry && yarn config set nodeLinker node-modules",pnpm:"pnpm --package @angular/cli dlx ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --package-manager=pnpm --skip-install"}},"lit-vite-ts":{displayName:{type:"Lit",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template lit-ts",yarn:"yarn create vite@latest . --template lit-ts && touch yarn.lock && yarn set version berry && yarn config set nodeLinker pnp",pnpm:"pnpm create vite@latest . --template lit-ts"}}},packageManagerToCoercedName=packageManager=>{switch(packageManager){case"npm":return"npm";case"pnpm":return"pnpm";default:return"yarn"}},buildProjectDisplayNameForPrint=({displayName})=>{let{type,builder,language}=displayName;return`${import_picocolors.default.bold(import_picocolors.default.blue(type))} ${builder?`+ ${builder} `:""}(${language})`},scaffoldNewProject=async(packageManager,{disableTelemetry})=>{let packageManagerName=packageManagerToCoercedName(packageManager);import_node_logger2.logger.plain(boxen(import_ts_dedent4.dedent`
|
77
77
|
Would you like to generate a new project from the following list?
|
78
78
|
|
79
79
|
${import_picocolors.default.bold("Note:")}
|
@@ -85,7 +85,7 @@
|
|
85
85
|
"${projectDisplayName}" project with ${import_picocolors.default.bold(packageManagerName)} created successfully!
|
86
86
|
|
87
87
|
Continuing with Storybook installation...
|
88
|
-
`,{title:import_picocolors.default.bold("\u2705 Success!"),padding:1,borderStyle:"double",borderColor:"green"})),import_node_logger2.logger.line(1)},BASE_IGNORED_FILES=[".git",".gitignore",".DS_Store",".cache"],IGNORED_FILES_BY_PACKAGE_MANAGER={npm:[...BASE_IGNORED_FILES],yarn:[...BASE_IGNORED_FILES,".yarnrc.yml",".yarn"],pnpm:[...BASE_IGNORED_FILES]},currentDirectoryIsEmpty=packageManager=>{let packageManagerName=packageManagerToCoercedName(packageManager),cwdFolderEntries=(0,import_node_fs3.readdirSync)(process.cwd()),filesToIgnore=IGNORED_FILES_BY_PACKAGE_MANAGER[packageManagerName];return cwdFolderEntries.length===0||cwdFolderEntries.every(entry=>filesToIgnore.includes(entry))};var logger4=console,installStorybook=async(projectType,packageManager,options)=>{let npmOptions={installAsDevDependencies:!0,skipInstall:options.skipInstall},language=await(0,import_cli26.detectLanguage)(packageManager),pnp=await(0,import_cli26.detectPnp)(),generatorOptions={language,builder:options.builder,linkable:!!options.linkable,pnp:pnp||options.usePnp,yes:options.yes,projectType},runGenerator=async()=>{switch(projectType){case import_cli25.ProjectType.REACT_SCRIPTS:return REACT_SCRIPTS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Create React App" based project'));case import_cli25.ProjectType.REACT:return REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React" app'));case import_cli25.ProjectType.REACT_NATIVE:return REACT_NATIVE_default(packageManager,npmOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React Native" app'));case import_cli25.ProjectType.QWIK:return QWIK_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Qwik" app'));case import_cli25.ProjectType.WEBPACK_REACT:return WEBPACK_REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Webpack React" app'));case import_cli25.ProjectType.REACT_PROJECT:return REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React" library'));case import_cli25.ProjectType.NEXTJS:return NEXTJS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Next" app'));case import_cli25.ProjectType.VUE3:return VUE3_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Vue 3" app'));case import_cli25.ProjectType.ANGULAR:return(0,import_common3.commandLog)('Adding Storybook support to your "Angular" app'),ANGULAR_default(packageManager,npmOptions,generatorOptions,options);case import_cli25.ProjectType.EMBER:return EMBER_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Ember" app'));case import_cli25.ProjectType.HTML:return HTML_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "HTML" app'));case import_cli25.ProjectType.WEB_COMPONENTS:return WEB_COMPONENTS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "web components" app'));case import_cli25.ProjectType.PREACT:return PREACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Preact" app'));case import_cli25.ProjectType.SVELTE:return SVELTE_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Svelte" app'));case import_cli25.ProjectType.SVELTEKIT:return SVELTEKIT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "SvelteKit" app'));case import_cli25.ProjectType.SERVER:return SERVER_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Server" app'));case import_cli25.ProjectType.NX:throw new import_server_errors2.NxProjectDetectedError;case import_cli25.ProjectType.SOLID:return SOLID_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "SolidJS" app'));case import_cli25.ProjectType.UNSUPPORTED:return(0,import_common3.paddedLog)("We detected a project type that we don't support yet."),(0,import_common3.paddedLog)("If you'd like your framework to be supported, please let use know about it at https://github.com/storybookjs/storybook/issues"),logger4.log(),Promise.resolve();default:return(0,import_common3.paddedLog)(`We couldn't detect your project type. (code: ${projectType})`),(0,import_common3.paddedLog)("You can specify a project type explicitly via `storybook init --type <type>`, see our docs on how to configure Storybook for your framework: https://storybook.js.org/docs/
|
88
|
+
`,{title:import_picocolors.default.bold("\u2705 Success!"),padding:1,borderStyle:"double",borderColor:"green"})),import_node_logger2.logger.line(1)},BASE_IGNORED_FILES=[".git",".gitignore",".DS_Store",".cache"],IGNORED_FILES_BY_PACKAGE_MANAGER={npm:[...BASE_IGNORED_FILES],yarn:[...BASE_IGNORED_FILES,".yarnrc.yml",".yarn"],pnpm:[...BASE_IGNORED_FILES]},currentDirectoryIsEmpty=packageManager=>{let packageManagerName=packageManagerToCoercedName(packageManager),cwdFolderEntries=(0,import_node_fs3.readdirSync)(process.cwd()),filesToIgnore=IGNORED_FILES_BY_PACKAGE_MANAGER[packageManagerName];return cwdFolderEntries.length===0||cwdFolderEntries.every(entry=>filesToIgnore.includes(entry))};var logger4=console,installStorybook=async(projectType,packageManager,options)=>{let npmOptions={installAsDevDependencies:!0,skipInstall:options.skipInstall},language=await(0,import_cli26.detectLanguage)(packageManager),pnp=await(0,import_cli26.detectPnp)(),generatorOptions={language,builder:options.builder,linkable:!!options.linkable,pnp:pnp||options.usePnp,yes:options.yes,projectType},runGenerator=async()=>{switch(projectType){case import_cli25.ProjectType.REACT_SCRIPTS:return REACT_SCRIPTS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Create React App" based project'));case import_cli25.ProjectType.REACT:return REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React" app'));case import_cli25.ProjectType.REACT_NATIVE:return REACT_NATIVE_default(packageManager,npmOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React Native" app'));case import_cli25.ProjectType.QWIK:return QWIK_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Qwik" app'));case import_cli25.ProjectType.WEBPACK_REACT:return WEBPACK_REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Webpack React" app'));case import_cli25.ProjectType.REACT_PROJECT:return REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React" library'));case import_cli25.ProjectType.NEXTJS:return NEXTJS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Next" app'));case import_cli25.ProjectType.VUE3:return VUE3_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Vue 3" app'));case import_cli25.ProjectType.ANGULAR:return(0,import_common3.commandLog)('Adding Storybook support to your "Angular" app'),ANGULAR_default(packageManager,npmOptions,generatorOptions,options);case import_cli25.ProjectType.EMBER:return EMBER_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Ember" app'));case import_cli25.ProjectType.HTML:return HTML_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "HTML" app'));case import_cli25.ProjectType.WEB_COMPONENTS:return WEB_COMPONENTS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "web components" app'));case import_cli25.ProjectType.PREACT:return PREACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Preact" app'));case import_cli25.ProjectType.SVELTE:return SVELTE_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Svelte" app'));case import_cli25.ProjectType.SVELTEKIT:return SVELTEKIT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "SvelteKit" app'));case import_cli25.ProjectType.SERVER:return SERVER_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Server" app'));case import_cli25.ProjectType.NX:throw new import_server_errors2.NxProjectDetectedError;case import_cli25.ProjectType.SOLID:return SOLID_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "SolidJS" app'));case import_cli25.ProjectType.UNSUPPORTED:return(0,import_common3.paddedLog)("We detected a project type that we don't support yet."),(0,import_common3.paddedLog)("If you'd like your framework to be supported, please let use know about it at https://github.com/storybookjs/storybook/issues"),logger4.log(),Promise.resolve();default:return(0,import_common3.paddedLog)(`We couldn't detect your project type. (code: ${projectType})`),(0,import_common3.paddedLog)("You can specify a project type explicitly via `storybook init --type <type>`, see our docs on how to configure Storybook for your framework: https://storybook.js.org/docs/get-started/install"),logger4.log(),projectTypeInquirer(options,packageManager)}};try{return await runGenerator()}catch(err){throw err?.message!=="Canceled by the user"&&err?.stack&&logger4.error(`
|
89
89
|
${import_picocolors2.default.red(err.stack)}`),new import_common3.HandledError(err)}},projectTypeInquirer=async(options,packageManager)=>{let manualAnswer=options.yes?!0:await(0,import_prompts2.default)([{type:"confirm",name:"manual",message:"Do you want to manually choose a Storybook project type to install?"}]);if(manualAnswer!==!0&&manualAnswer.manual){let{manualFramework}=await(0,import_prompts2.default)([{type:"select",name:"manualFramework",message:"Please choose a project type from the following list:",choices:import_cli25.installableProjectTypes.map(type=>({title:type,value:type.toUpperCase()}))}]);if(manualFramework)return installStorybook(manualFramework,packageManager,options)}logger4.log(),logger4.log("For more information about installing Storybook: https://storybook.js.org/docs"),process.exit(0)};async function doInitiate(options){let{packageManager:pkgMgr}=options,packageManager=import_common3.JsPackageManagerFactory.getPackageManager({force:pkgMgr}),latestVersion=await packageManager.latestVersion("storybook"),currentVersion=import_common3.versions.storybook,isPrerelease=(0,import_semver3.prerelease)(currentVersion),isOutdated=(0,import_semver3.lt)(currentVersion,latestVersion),borderColor=isOutdated?"#FC521F":"#F1618C",messages={welcome:`Adding Storybook version ${import_picocolors2.default.bold(currentVersion)} to your project..`,notLatest:import_picocolors2.default.red(import_ts_dedent5.dedent`
|
90
90
|
This version is behind the latest release, which is: ${import_picocolors2.default.bold(latestVersion)}!
|
91
91
|
You likely ran the init command through npx, which can use a locally cached version, to get the latest please run:
|
package/dist/index.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export { doInitiate as initiate } from './chunk-
|
1
|
+
export { doInitiate as initiate } from './chunk-QT6PAMJX.js';
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "create-storybook",
|
3
|
-
"version": "8.4.0-
|
3
|
+
"version": "8.4.0-beta.1",
|
4
4
|
"description": "Initialize Storybook into your project",
|
5
5
|
"homepage": "https://github.com/storybookjs/storybook/tree/next/code/lib/create-storybook",
|
6
6
|
"bugs": {
|
@@ -64,7 +64,7 @@
|
|
64
64
|
"prettier": "^3.1.1",
|
65
65
|
"prompts": "^2.4.0",
|
66
66
|
"semver": "^7.3.7",
|
67
|
-
"storybook": "8.4.0-
|
67
|
+
"storybook": "8.4.0-beta.1",
|
68
68
|
"tiny-invariant": "^1.3.1",
|
69
69
|
"ts-dedent": "^2.0.0"
|
70
70
|
},
|