@storybook/cli 8.0.0-alpha.6 → 8.0.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-BJWWMVYP.mjs → chunk-W7OGSSFY.mjs} +2 -3
- package/dist/generate.js +59 -53
- package/dist/generate.mjs +18 -12
- package/dist/index.d.ts +1 -3
- package/dist/index.js +2 -2
- package/dist/index.mjs +1 -1
- package/package.json +9 -9
package/dist/generate.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __commonJS, __require, __toESM, versions_default, JsPackageManagerFactory, parseList, getEnvConfig,
|
|
1
|
+
import { __commonJS, __require, __toESM, versions_default, JsPackageManagerFactory, parseList, getEnvConfig, isCorePackage, getStorybookVersion, getStorybookVersionSpecifier, commandLog, installableProjectTypes, paddedLog, HandledError, codeLog, isNxProject, getPackageDetails, coerceSemver, supportedTemplates, unsupportedTemplate, getCliDir, copyTemplate, getBabelDependencies, copyTemplateFiles, externalFrameworks } from './chunk-W7OGSSFY.mjs';
|
|
2
2
|
import program from 'commander';
|
|
3
3
|
import chalk13 from 'chalk';
|
|
4
4
|
import envinfo from 'envinfo';
|
|
@@ -9,7 +9,7 @@ import { addToGlobalContext, telemetry, getStorybookCoreVersion } from '@storybo
|
|
|
9
9
|
import invariant3 from 'tiny-invariant';
|
|
10
10
|
import prompts6 from 'prompts';
|
|
11
11
|
import { withTelemetry, buildDevStandalone, buildStaticStandalone } from '@storybook/core-server';
|
|
12
|
-
import { GenerateNewProjectOnInitError, NxProjectDetectedError, MissingAngularJsonError } from '@storybook/core-events/server-errors';
|
|
12
|
+
import { ConflictingVersionTagsError, UpgradeStorybookPackagesError, GenerateNewProjectOnInitError, NxProjectDetectedError, MissingAngularJsonError } from '@storybook/core-events/server-errors';
|
|
13
13
|
import dedent19, { dedent } from 'ts-dedent';
|
|
14
14
|
import * as fs from 'fs';
|
|
15
15
|
import fs__default, { existsSync as existsSync$1 } from 'fs';
|
|
@@ -39,9 +39,9 @@ var require_ansi_regex=__commonJS({"../../node_modules/ansi-regex/index.js"(expo
|
|
|
39
39
|
`&&(escapeCode&&code&&(returnValue+=wrapAnsi(escapeCode)),escapeUrl&&(returnValue+=wrapAnsiHyperlink(escapeUrl)));}return returnValue};module.exports=(string,columns,options)=>String(string).normalize().replace(/\r\n/g,`
|
|
40
40
|
`).split(`
|
|
41
41
|
`).map(line=>exec2(line,columns,options)).join(`
|
|
42
|
-
`);}});var require_boxen=__commonJS({"../../node_modules/boxen/index.js"(exports,module){var stringWidth=require_string_width(),
|
|
42
|
+
`);}});var require_boxen=__commonJS({"../../node_modules/boxen/index.js"(exports,module){var stringWidth=require_string_width(),chalk33=__require("chalk"),widestLine=require_widest_line(),cliBoxes=require_cli_boxes(),camelCase=require_camelcase(),ansiAlign=require_ansi_align(),wrapAnsi=require_wrap_ansi(),NL=`
|
|
43
43
|
`,PAD=" ",terminalColumns=()=>{let{env,stdout,stderr}=process;return stdout&&stdout.columns?stdout.columns:stderr&&stderr.columns?stderr.columns:env.COLUMNS?Number.parseInt(env.COLUMNS,10):80},getObject=detail=>typeof detail=="number"?{top:detail,right:detail*3,bottom:detail,left:detail*3}:{top:0,right:0,bottom:0,left:0,...detail},getBorderChars=borderStyle=>{let sides=["topLeft","topRight","bottomRight","bottomLeft","vertical","horizontal"],chararacters;if(typeof borderStyle=="string"){if(chararacters=cliBoxes[borderStyle],!chararacters)throw new TypeError(`Invalid border style: ${borderStyle}`)}else {for(let side of sides)if(!borderStyle[side]||typeof borderStyle[side]!="string")throw new TypeError(`Invalid border style: ${side}`);chararacters=borderStyle;}return chararacters},makeTitle=(text,horizontal,alignement)=>{let title="",textWidth=stringWidth(text);switch(alignement){case"left":title=text+horizontal.slice(textWidth);break;case"right":title=horizontal.slice(textWidth)+text;break;default:horizontal=horizontal.slice(textWidth),horizontal.length%2===1?(horizontal=horizontal.slice(Math.floor(horizontal.length/2)),title=horizontal.slice(1)+text+horizontal):(horizontal=horizontal.slice(horizontal.length/2),title=horizontal+text+horizontal);break}return title},makeContentText=(text,padding,columns,align)=>{text=ansiAlign(text,{align});let lines=text.split(NL),textWidth=widestLine(text),max=columns-padding.left-padding.right;if(textWidth>max){let newLines=[];for(let line of lines){let createdLines=wrapAnsi(line,max,{hard:!0}),alignedLinesArray=ansiAlign(createdLines,{align}).split(`
|
|
44
|
-
`),longestLength=Math.max(...alignedLinesArray.map(s=>stringWidth(s)));for(let alignedLine of alignedLinesArray){let paddedLine;switch(align){case"center":paddedLine=PAD.repeat((max-longestLength)/2)+alignedLine;break;case"right":paddedLine=PAD.repeat(max-longestLength)+alignedLine;break;default:paddedLine=alignedLine;break}newLines.push(paddedLine);}}lines=newLines;}align==="center"&&textWidth<max?lines=lines.map(line=>PAD.repeat((max-textWidth)/2)+line):align==="right"&&textWidth<max&&(lines=lines.map(line=>PAD.repeat(max-textWidth)+line));let paddingLeft=PAD.repeat(padding.left),paddingRight=PAD.repeat(padding.right);return lines=lines.map(line=>paddingLeft+line+paddingRight),lines=lines.map(line=>{if(columns-stringWidth(line)>0)switch(align){case"center":return line+PAD.repeat(columns-stringWidth(line));case"right":return line+PAD.repeat(columns-stringWidth(line));default:return line+PAD.repeat(columns-stringWidth(line))}return line}),padding.top>0&&(lines=new Array(padding.top).fill(PAD.repeat(columns)).concat(lines)),padding.bottom>0&&(lines=lines.concat(new Array(padding.bottom).fill(PAD.repeat(columns)))),lines.join(NL)},isHex=color=>color.match(/^#(?:[0-f]{3}){1,2}$/i),isColorValid=color=>typeof color=="string"&&(
|
|
44
|
+
`),longestLength=Math.max(...alignedLinesArray.map(s=>stringWidth(s)));for(let alignedLine of alignedLinesArray){let paddedLine;switch(align){case"center":paddedLine=PAD.repeat((max-longestLength)/2)+alignedLine;break;case"right":paddedLine=PAD.repeat(max-longestLength)+alignedLine;break;default:paddedLine=alignedLine;break}newLines.push(paddedLine);}}lines=newLines;}align==="center"&&textWidth<max?lines=lines.map(line=>PAD.repeat((max-textWidth)/2)+line):align==="right"&&textWidth<max&&(lines=lines.map(line=>PAD.repeat(max-textWidth)+line));let paddingLeft=PAD.repeat(padding.left),paddingRight=PAD.repeat(padding.right);return lines=lines.map(line=>paddingLeft+line+paddingRight),lines=lines.map(line=>{if(columns-stringWidth(line)>0)switch(align){case"center":return line+PAD.repeat(columns-stringWidth(line));case"right":return line+PAD.repeat(columns-stringWidth(line));default:return line+PAD.repeat(columns-stringWidth(line))}return line}),padding.top>0&&(lines=new Array(padding.top).fill(PAD.repeat(columns)).concat(lines)),padding.bottom>0&&(lines=lines.concat(new Array(padding.bottom).fill(PAD.repeat(columns)))),lines.join(NL)},isHex=color=>color.match(/^#(?:[0-f]{3}){1,2}$/i),isColorValid=color=>typeof color=="string"&&(chalk33[color]||isHex(color)),getColorFn=color=>isHex(color)?chalk33.hex(color):chalk33[color],getBGColorFn=color=>isHex(color)?chalk33.bgHex(color):chalk33[camelCase(["bg",color])];module.exports=(text,options)=>{options={padding:0,borderStyle:"single",dimBorder:!1,textAlignment:"left",float:"left",titleAlignment:"left",...options},options.align&&(options.textAlignment=options.align);let BORDERS_WIDTH=2;if(options.borderColor&&!isColorValid(options.borderColor))throw new Error(`${options.borderColor} is not a valid borderColor`);if(options.backgroundColor&&!isColorValid(options.backgroundColor))throw new Error(`${options.backgroundColor} is not a valid backgroundColor`);let chars=getBorderChars(options.borderStyle),padding=getObject(options.padding),margin=getObject(options.margin),colorizeBorder=border=>{let newBorder=options.borderColor?getColorFn(options.borderColor)(border):border;return options.dimBorder?chalk33.dim(newBorder):newBorder},colorizeContent=content=>options.backgroundColor?getBGColorFn(options.backgroundColor)(content):content,columns=terminalColumns(),contentWidth=widestLine(wrapAnsi(text,columns-BORDERS_WIDTH,{hard:!0,trim:!1}))+padding.left+padding.right,title=options.title&&options.title.slice(0,columns-4-margin.left-margin.right);if(title&&(title=` ${title} `,stringWidth(title)>contentWidth&&(contentWidth=stringWidth(title))),margin.left&&margin.right&&contentWidth+BORDERS_WIDTH+margin.left+margin.right>columns){let multiplier=(columns-contentWidth-BORDERS_WIDTH)/(margin.left+margin.right);margin.left=Math.max(0,Math.floor(margin.left*multiplier)),margin.right=Math.max(0,Math.floor(margin.right*multiplier));}contentWidth=Math.min(contentWidth,columns-BORDERS_WIDTH-margin.left-margin.right),text=makeContentText(text,padding,contentWidth,options.textAlignment);let marginLeft=PAD.repeat(margin.left);if(options.float==="center"){let marginWidth=Math.max((columns-contentWidth-BORDERS_WIDTH)/2,0);marginLeft=PAD.repeat(marginWidth);}else if(options.float==="right"){let marginWidth=Math.max(columns-contentWidth-margin.right-BORDERS_WIDTH,0);marginLeft=PAD.repeat(marginWidth);}let horizontal=chars.horizontal.repeat(contentWidth),top=colorizeBorder(NL.repeat(margin.top)+marginLeft+chars.topLeft+(title?makeTitle(title,horizontal,options.titleAlignment):horizontal)+chars.topRight),bottom=colorizeBorder(marginLeft+chars.bottomLeft+horizontal+chars.bottomRight+NL.repeat(margin.bottom)),side=colorizeBorder(chars.vertical),LINE_SEPARATOR=contentWidth+BORDERS_WIDTH+margin.left>=columns?"":NL,middle=text.split(NL).map(line=>marginLeft+side+colorizeContent(line)+side).join(LINE_SEPARATOR);return top+LINE_SEPARATOR+middle+LINE_SEPARATOR+bottom};module.exports._borderStyles=cliBoxes;}});var import_boxen2=__toESM(require_boxen());var viteConfigFiles=["vite.config.ts","vite.config.js","vite.config.mjs"],webpackConfigFiles=["webpack.config.js"],hasDependency=(packageJson,name,matcher)=>{let version=packageJson.dependencies?.[name]||packageJson.devDependencies?.[name];return version&&typeof matcher=="function"?matcher(version):!!version},hasPeerDependency=(packageJson,name,matcher)=>{let version=packageJson.peerDependencies?.[name];return version&&typeof matcher=="function"?matcher(version):!!version},getFrameworkPreset=(packageJson,framework)=>{let matcher={dependencies:[!1],peerDependencies:[!1],files:[!1]},{preset,files,dependencies,peerDependencies,matcherFunction}=framework,dependencySearches=[];Array.isArray(dependencies)?dependencySearches=dependencies.map(name=>[name,void 0]):typeof dependencies=="object"&&(dependencySearches=Object.entries(dependencies)),dependencySearches.length>0&&(matcher.dependencies=dependencySearches.map(([name,matchFn])=>hasDependency(packageJson,name,matchFn)));let peerDependencySearches=[];return Array.isArray(peerDependencies)?peerDependencySearches=peerDependencies.map(name=>[name,void 0]):typeof peerDependencies=="object"&&(peerDependencySearches=Object.entries(peerDependencies)),peerDependencySearches.length>0&&(matcher.peerDependencies=peerDependencySearches.map(([name,matchFn])=>hasPeerDependency(packageJson,name,matchFn))),Array.isArray(files)&&files.length>0&&(matcher.files=files.map(name=>fs.existsSync(name))),matcherFunction(matcher)?preset:null};function detectFrameworkPreset(packageJson={}){let result=[...supportedTemplates,unsupportedTemplate].find(framework=>getFrameworkPreset(packageJson,framework)!==null);return result?result.preset:"UNDETECTED"}async function detectBuilder(packageManager,projectType){let viteConfig=findUp.sync(viteConfigFiles),webpackConfig=findUp.sync(webpackConfigFiles),dependencies=await packageManager.getAllDependencies();if(viteConfig||dependencies.vite&&dependencies.webpack===void 0)return commandLog("Detected Vite project. Setting builder to Vite")(),"vite";if(webpackConfig||dependencies.webpack&&dependencies.vite!==void 0)return commandLog("Detected webpack project. Setting builder to webpack")(),"webpack5";switch(projectType){case"REACT_SCRIPTS":case"ANGULAR":case"REACT_NATIVE":case"NEXTJS":case"EMBER":return "webpack5";default:let{builder}=await prompts6({type:"select",name:"builder",message:`
|
|
45
45
|
We were not able to detect the right builder for your project. Please select one:`,choices:[{title:"Vite",value:"vite"},{title:"Webpack 5",value:"webpack5"}]},{onCancel:()=>{throw new HandledError("Canceled by the user")}});return builder}}function isStorybookInstantiated(configDir=resolve(process.cwd(),".storybook")){return fs.existsSync(configDir)}async function detectPnp(){return !!findUp.sync([".pnp.js",".pnp.cjs"])}async function detectLanguage(packageManager){let language="javascript";if(fs.existsSync("jsconfig.json"))return language;let isTypescriptDirectDependency=await packageManager.getAllDependencies().then(deps=>!!deps.typescript),typescriptVersion=await packageManager.getPackageVersion("typescript"),prettierVersion=await packageManager.getPackageVersion("prettier"),babelPluginTransformTypescriptVersion=await packageManager.getPackageVersion("@babel/plugin-transform-typescript"),typescriptEslintParserVersion=await packageManager.getPackageVersion("@typescript-eslint/parser"),eslintPluginStorybookVersion=await packageManager.getPackageVersion("eslint-plugin-storybook");return isTypescriptDirectDependency&&typescriptVersion&&(semver.gte(typescriptVersion,"4.9.0")&&(!prettierVersion||semver.gte(prettierVersion,"2.8.0"))&&(!babelPluginTransformTypescriptVersion||semver.gte(babelPluginTransformTypescriptVersion,"7.20.0"))&&(!typescriptEslintParserVersion||semver.gte(typescriptEslintParserVersion,"5.44.0"))&&(!eslintPluginStorybookVersion||semver.gte(eslintPluginStorybookVersion,"0.6.8"))?language="typescript-4-9":semver.gte(typescriptVersion,"3.8.0")?language="typescript-3-8":semver.lt(typescriptVersion,"3.8.0")&&logger.warn("Detected TypeScript < 3.8, populating with JavaScript examples")),language}async function detect(packageManager,options={}){let packageJson=await packageManager.retrievePackageJson();return packageJson?await isNxProject()?"NX":options.html?"HTML":detectFrameworkPreset(packageJson):"UNDETECTED"}var sanitizeFramework=framework=>{let matches=framework.match(/(@storybook\/\w+(?:-\w+)*)|(storybook-(\w+(?:-\w+)*))/g);if(matches)return matches[0]};async function configureMain({addons,extensions=["js","jsx","mjs","ts","tsx"],storybookConfigFolder,language,prefixes=[],...custom}){let srcPath=path7.resolve(storybookConfigFolder,"../src"),prefix=await fse.pathExists(srcPath)?"../src":"../stories",config={stories:[`${prefix}/**/*.mdx`,`${prefix}/**/*.stories.@(${extensions.join("|")})`],addons,...custom},isTypescript=language==="typescript-4-9"||language==="typescript-3-8",mainConfigTemplate=dedent`<<import>><<prefix>>const config<<type>> = <<mainContents>>;
|
|
46
46
|
export default config;`,frameworkPackage=sanitizeFramework(custom.framework?.name);frameworkPackage||(mainConfigTemplate=mainConfigTemplate.replace("<<import>>","").replace("<<type>>",""),logger.warn("Could not find framework package name"));let mainContents=JSON.stringify(config,null,2).replace(/['"]%%/g,"").replace(/%%['"]/g,""),imports=[],finalPrefixes=[...prefixes];custom.framework?.name.includes("path.dirname(")&&imports.push("import path from 'path';"),isTypescript?imports.push(`import type { StorybookConfig } from '${frameworkPackage}';`):finalPrefixes.push(`/** @type { import('${frameworkPackage}').StorybookConfig } */`);let mainJsContents=mainConfigTemplate.replace("<<import>>",`${imports.join(`
|
|
47
47
|
|
|
@@ -125,7 +125,7 @@ We were not able to detect the right builder for your project. Please select one
|
|
|
125
125
|
|
|
126
126
|
Continuing with Storybook installation...
|
|
127
127
|
`,{title:chalk13.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 logger6=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"REACT_SCRIPTS":return REACT_SCRIPTS_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Create React App" based project'));case"REACT":return REACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "React" app'));case"REACT_NATIVE":return REACT_NATIVE_default(packageManager,npmOptions).then(commandLog('Adding Storybook support to your "React Native" app'));case"QWIK":return QWIK_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Qwik" app'));case"WEBPACK_REACT":return WEBPACK_REACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Webpack React" app'));case"REACT_PROJECT":return REACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "React" library'));case"NEXTJS":return NEXTJS_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Next" app'));case"VUE3":return VUE3_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Vue 3" app'));case"ANGULAR":return commandLog('Adding Storybook support to your "Angular" app'),ANGULAR_default(packageManager,npmOptions,generatorOptions,options);case"EMBER":return EMBER_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Ember" app'));case"HTML":return HTML_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "HTML" app'));case"WEB_COMPONENTS":return WEB_COMPONENTS_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "web components" app'));case"PREACT":return PREACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Preact" app'));case"SVELTE":return SVELTE_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Svelte" app'));case"SVELTEKIT":return SVELTEKIT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "SvelteKit" app'));case"SERVER":return SERVER_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Server" app'));case"NX":throw new NxProjectDetectedError;case"SOLID":return SOLID_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "SolidJS" app'));case"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"),logger6.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/react/get-started/install"),logger6.log(),projectTypeInquirer(options,packageManager)}};try{return await runGenerator()}catch(err){throw err?.message!=="Canceled by the user"&&err?.stack&&logger6.error(`
|
|
128
|
-
${chalk13.red(err.stack)}`),new HandledError(err)}},projectTypeInquirer=async(options,packageManager)=>{let manualAnswer=options.yes?!0:await prompts6([{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 prompts6([{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)}logger6.log(),logger6.log("For more information about installing Storybook: https://storybook.js.org/docs"),process.exit(0);};async function doInitiate(options,pkg2){let{packageManager:pkgMgr}=options
|
|
128
|
+
${chalk13.red(err.stack)}`),new HandledError(err)}},projectTypeInquirer=async(options,packageManager)=>{let manualAnswer=options.yes?!0:await prompts6([{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 prompts6([{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)}logger6.log(),logger6.log("For more information about installing Storybook: https://storybook.js.org/docs"),process.exit(0);};async function doInitiate(options,pkg2){let{packageManager:pkgMgr}=options,packageManager=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),welcomeMessage="storybook init - the simplest way to add a Storybook to your project.";logger6.log(chalk13.inverse(`
|
|
129
129
|
${welcomeMessage}
|
|
130
130
|
`));let{default:updateNotifier}=await import('simple-update-notifier');await updateNotifier({pkg:pkg2,updateCheckInterval:1e3*60*60}),options.force!==!0&¤tDirectoryIsEmpty(packageManager.type)&&(await scaffoldNewProject(packageManager.type,options),(process.env.IN_STORYBOOK_SANDBOX==="true"||process.env.CI==="true")&&packageManager.addPackageResolutions({"@storybook/telemetry":versions_default["@storybook/telemetry"]}));let projectType,projectTypeProvided=options.type,infoText=projectTypeProvided?`Installing Storybook for user specified project type: ${projectTypeProvided}`:"Detecting project type",done=commandLog(infoText);if(projectTypeProvided)if(installableProjectTypes.includes(projectTypeProvided))projectType=projectTypeProvided.toUpperCase();else throw done(`The provided project type was not recognized by Storybook: ${projectTypeProvided}`),logger6.log(`
|
|
131
131
|
The project types currently supported by Storybook are:
|
|
@@ -142,7 +142,7 @@ The project types currently supported by Storybook are:
|
|
|
142
142
|
Wanna know more about Storybook? Check out ${chalk13.cyan("https://storybook.js.org/")}
|
|
143
143
|
Having trouble or want to chat? Join us at ${chalk13.cyan("https://discord.gg/storybook/")}
|
|
144
144
|
`,{borderStyle:"round",padding:1,borderColor:"#F1618C"})),{shouldRunDev:process.env.CI!=="true"&&process.env.IN_STORYBOOK_SANDBOX!=="true",projectType,packageManager,storybookCommand}}async function initiate(options,pkg2){let initiateResult=await withTelemetry("init",{cliOptions:options,printError:err=>!err.handled&&logger6.error(err)},()=>doInitiate(options,pkg2));if(initiateResult?.shouldRunDev){let{projectType,packageManager,storybookCommand}=initiateResult;logger6.log(`
|
|
145
|
-
Running Storybook`);try{let isReactWebProject=projectType==="REACT_SCRIPTS"||projectType==="REACT"||projectType==="WEBPACK_REACT"||projectType==="REACT_PROJECT"||projectType==="NEXTJS",flags=[];packageManager.type==="npm"&&flags.push("--"),isReactWebProject&&flags.push("--initial-path=/onboarding"),flags.push("--quiet"),packageManager.runPackageCommandSync(storybookCommand.replace(/^yarn /,""),flags,void 0,"inherit");}catch{}}}var logger7=console,postinstallAddon=async(addonName,options)=>{try{let modulePath=__require.resolve(`${addonName}/postinstall`,{paths:[process.cwd()]}),postinstall=__require(modulePath);try{logger7.log(`Running postinstall script for ${addonName}`),await postinstall(options);}catch(e){logger7.error(`Error running postinstall script for ${addonName}`),logger7.error(e);}}catch{}},getVersionSpecifier=addon=>{let groups=/^(...*)@(.*)$/.exec(addon);return groups?[groups[0],groups[2]]:[addon,void 0]},requireMain=configDir=>{let absoluteConfigDir=isAbsolute(configDir)?configDir:join(process.cwd(),configDir),mainFile=join(absoluteConfigDir,"main");return serverRequire(mainFile)??{}},checkInstalled=(addonName,main)=>!!main.addons?.find(entry=>(typeof entry=="string"?entry:entry.name)?.endsWith(addonName));async function add(addon,options){let{packageManager:pkgMgr}=options
|
|
145
|
+
Running Storybook`);try{let isReactWebProject=projectType==="REACT_SCRIPTS"||projectType==="REACT"||projectType==="WEBPACK_REACT"||projectType==="REACT_PROJECT"||projectType==="NEXTJS",flags=[];packageManager.type==="npm"&&flags.push("--"),isReactWebProject&&flags.push("--initial-path=/onboarding"),flags.push("--quiet"),packageManager.runPackageCommandSync(storybookCommand.replace(/^yarn /,""),flags,void 0,"inherit");}catch{}}}var logger7=console,postinstallAddon=async(addonName,options)=>{try{let modulePath=__require.resolve(`${addonName}/postinstall`,{paths:[process.cwd()]}),postinstall=__require(modulePath);try{logger7.log(`Running postinstall script for ${addonName}`),await postinstall(options);}catch(e){logger7.error(`Error running postinstall script for ${addonName}`),logger7.error(e);}}catch{}},getVersionSpecifier=addon=>{let groups=/^(...*)@(.*)$/.exec(addon);return groups?[groups[0],groups[2]]:[addon,void 0]},requireMain=configDir=>{let absoluteConfigDir=isAbsolute(configDir)?configDir:join(process.cwd(),configDir),mainFile=join(absoluteConfigDir,"main");return serverRequire(mainFile)??{}},checkInstalled=(addonName,main)=>!!main.addons?.find(entry=>(typeof entry=="string"?entry:entry.name)?.endsWith(addonName));async function add(addon,options){let{packageManager:pkgMgr}=options,packageManager=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),packageJson=await packageManager.retrievePackageJson(),{mainConfig,configDir}=getStorybookInfo(packageJson);if(typeof configDir>"u")throw new Error(dedent19`
|
|
146
146
|
Unable to find storybook config directory
|
|
147
147
|
`);if(checkInstalled(addon,requireMain(configDir)))throw new Error(dedent19`
|
|
148
148
|
Addon ${addon} is already installed; we skipped adding it to your ${mainConfig}.
|
|
@@ -180,7 +180,7 @@ Running Storybook`);try{let isReactWebProject=projectType==="REACT_SCRIPTS"||pro
|
|
|
180
180
|
`},async run(options){return webpack5.run({...options,result:{webpackVersion:null,...options.result}})}};function slash(path8){return path8.startsWith("\\\\?\\")?path8:path8.replace(/\\/g,"/")}var logger11=console,mdxgfm={id:"github-flavored-markdown-mdx",async check({configDir,mainConfig,storybookVersion}){if(!semver.gte(storybookVersion,"7.0.0"))return null;let hasMDXFiles=await mainConfig?.stories?.reduce(async(acc,item)=>{if(await acc===!0)return !0;let pattern;if(typeof configDir>"u")return !1;if(typeof item=="string")pattern=slash(join(configDir,item));else if(typeof item=="object"){let directory=item.directory||"..",files2=item.files||"**/*.@(mdx|stories.@(mdx|js|jsx|mjs|ts|tsx))";pattern=slash(join(configDir,directory,files2));}return pattern?(await glob(pattern,commonGlobOptions(pattern))).some(f=>f.endsWith(".mdx")):!1},Promise.resolve(!1));return mainConfig?.features?.legacyMdx1===!0||!1||!hasMDXFiles||!!mainConfig.addons?.find(item=>item==="@storybook/addon-mdx-gfm"?!0:typeof item=="string"?!1:item.name==="@storybook/addon-docs"?item.options?.mdxPluginOptions?.mdxCompileOptions?.remarkPlugins?.length>0:!1)?null:{}},prompt(){return dedent`
|
|
181
181
|
In MDX1 you had the option of using GitHub flavored markdown.
|
|
182
182
|
|
|
183
|
-
Storybook
|
|
183
|
+
Storybook 8.0 uses MDX3 for compiling MDX, and thus no longer supports GFM out of the box.
|
|
184
184
|
Because of this you need to explicitly add the GFM plugin in the addon-docs options:
|
|
185
185
|
https://storybook.js.org/docs/react/writing-docs/mdx#lack-of-github-flavored-markdown-gfm
|
|
186
186
|
|
|
@@ -385,7 +385,12 @@ Running Storybook`);try{let isReactWebProject=projectType==="REACT_SCRIPTS"||pro
|
|
|
385
385
|
though we recommend giving "react-docgen" for a much faster dev experience.
|
|
386
386
|
|
|
387
387
|
https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#react-docgen-component-analysis-by-default
|
|
388
|
-
`},async run({dryRun,mainConfigPath}){dryRun||await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{logger21.info("\u2705 Setting typescript.reactDocgen"),dryRun||main.setFieldValue(["typescript","reactDocgen"],"react-docgen-typescript");});}};var
|
|
388
|
+
`},async run({dryRun,mainConfigPath}){dryRun||await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{logger21.info("\u2705 Setting typescript.reactDocgen"),dryRun||main.setFieldValue(["typescript","reactDocgen"],"react-docgen-typescript");});}};var storyshotsMigration={id:"storyshots-migration",promptOnly:!0,async check({mainConfig,packageManager}){return ((await packageManager.getAllDependencies())["@storybook/addon-storyshots"]||mainConfig.addons?.find(addon=>(typeof addon=="string"?addon:addon.name).includes("@storybook/addon-storyshots")))??null},prompt(){return dedent19`
|
|
389
|
+
${chalk13.bold("Attention")}: Storyshots is now officially deprecated, is no longer being maintained, and was removed in Storybook 8.
|
|
390
|
+
|
|
391
|
+
We recommend following the migration guide we've prepared to help you during this transition period:
|
|
392
|
+
${chalk13.yellow("https://storybook.js.org/docs/writing-tests/storyshots-migration-guide")}
|
|
393
|
+
`}};var allFixes=[nodeJsRequirement,newFrameworks,cra5,webpack5,vue3,eslintPlugin,builderVite,sbBinary,sbScripts,incompatibleAddons,removedGlobalClientAPIs,mdx1to2,mdxgfm,autodocsTrue,missingBabelRc,angularBuildersMultiproject,angularBuilders,wrapRequire,reactDocgen,storyshotsMigration];var ansiRegex=({onlyFirst=!1}={})=>{let pattern=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(pattern,onlyFirst?void 0:"g")},cleanLog=str=>str.replace(ansiRegex(),"").replace(/╮│/g,`\u256E
|
|
389
394
|
\u2502`).replace(/││/g,`\u2502
|
|
390
395
|
\u2502`).replace(/│╰/g,`\u2502
|
|
391
396
|
\u2570`).replace(/⚠️ {2}failed to check/g,`${EOL}\u26A0\uFE0F failed to check`);var import_boxen3=__toESM(require_boxen());function hasMultipleVersions(versions){return versions.find(v=>{let major=semver.major(v);if(major===0){let minor=semver.minor(v);if(minor===0){let patch=semver.patch(v);return versions.some(v2=>semver.patch(v2)!==patch)}return versions.some(v2=>semver.minor(v2)!==minor)}return versions.some(v2=>semver.major(v2)!==major)})}var messageDivider=`
|
|
@@ -410,7 +415,7 @@ ${error}`).join(`
|
|
|
410
415
|
Please check the changelog and migration guide for manual migrations and more information: ${chalk13.yellow("https://storybook.js.org/migration-guides/7.0")}
|
|
411
416
|
And reach out on Discord if you need help: ${chalk13.yellow("https://discord.gg/storybook")}
|
|
412
417
|
`);let duplicatedDepsMessage=installationMetadata?getDuplicatedDepsWarnings(installationMetadata):getDuplicatedDepsWarnings();duplicatedDepsMessage&&messages.push(duplicatedDepsMessage.join(messageDivider2));let hasNoFixes=Object.values(fixResults).every(r=>r==="unnecessary"),hasFailures=Object.values(fixResults).some(r=>r==="failed"||r==="check_failed"),title=hasNoFixes?"No migrations were applicable to your project":hasFailures?"Migration check ran with failures":"Migration check ran successfully";return (0, import_boxen3.default)(messages.filter(Boolean).join(segmentDivider),{borderStyle:"round",padding:1,title,borderColor:hasFailures?"red":"green"})}var logger22=console,LOG_FILE_NAME="migration-storybook.log",LOG_FILE_PATH=join(process.cwd(),LOG_FILE_NAME),TEMP_LOG_FILE_PATH="",originalStdOutWrite=process.stdout.write.bind(process.stdout),originalStdErrWrite=process.stderr.write.bind(process.stdout),augmentLogsToFile=()=>{TEMP_LOG_FILE_PATH=tempy.file({name:LOG_FILE_NAME});let logStream=createWriteStream(TEMP_LOG_FILE_PATH);process.stdout.write=d=>(originalStdOutWrite(d),logStream.write(cleanLog(d))),process.stderr.write=d=>logStream.write(cleanLog(d));},cleanup=()=>{process.stdout.write=originalStdOutWrite,process.stderr.write=originalStdErrWrite;},logAvailableMigrations=()=>{let availableFixes=allFixes.map(f=>chalk13.yellow(f.id)).join(", ");logger22.info(`
|
|
413
|
-
The following migrations are available: ${availableFixes}`);},automigrate=async({fixId,fixes:inputFixes,dryRun,yes,
|
|
418
|
+
The following migrations are available: ${availableFixes}`);},automigrate=async({fixId,fixes:inputFixes,dryRun,yes,packageManager:pkgMgr,list,configDir:userSpecifiedConfigDir,renderer:rendererPackage,skipInstall,hideMigrationSummary=!1}={})=>{if(list)return logAvailableMigrations(),null;let selectedFixes=inputFixes||allFixes,fixes=fixId?selectedFixes.filter(f=>f.id===fixId):selectedFixes;if(fixId&&fixes.length===0)return logger22.info(`\u{1F4ED} No migrations found for ${chalk13.magenta(fixId)}.`),logAvailableMigrations(),null;augmentLogsToFile(),logger22.info("\u{1F50E} checking possible migrations..");let{fixResults,fixSummary,preCheckFailure}=await runFixes({fixes,pkgMgr,userSpecifiedConfigDir,rendererPackage,skipInstall,dryRun,yes});if(Object.values(fixResults).some(r=>r==="failed"||r==="check_failed")?await move(TEMP_LOG_FILE_PATH,join(process.cwd(),LOG_FILE_NAME),{overwrite:!0}):await remove(TEMP_LOG_FILE_PATH),!hideMigrationSummary){let installationMetadata=await JsPackageManagerFactory.getPackageManager({force:pkgMgr}).findInstallations(["@storybook/*","storybook"]);logger22.info(),logger22.info(getMigrationSummary({fixResults,fixSummary,logFile:LOG_FILE_PATH,installationMetadata})),logger22.info();}return cleanup(),{fixResults,preCheckFailure}};async function runFixes({fixes,dryRun,yes,pkgMgr,userSpecifiedConfigDir,rendererPackage,skipInstall}){let packageManager=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),fixResults={},fixSummary={succeeded:[],failed:{},manual:[],skipped:[]},{configDir:inferredConfigDir,mainConfig:mainConfigPath}=getStorybookInfo(await packageManager.retrievePackageJson(),userSpecifiedConfigDir),storybookVersion=await getStorybookVersion(packageManager);if(!storybookVersion)return logger22.info(dedent19`
|
|
414
419
|
[Storybook automigrate] ❌ Unable to determine storybook version so the automigrations will be skipped.
|
|
415
420
|
🤔 Are you running automigrate from your project directory? Please specify your Storybook config directory with the --config-dir flag.
|
|
416
421
|
`),{fixResults,fixSummary,preCheckFailure:"undetected_sb_version"};let configDir=userSpecifiedConfigDir||inferredConfigDir||".storybook";try{await loadMainConfig({configDir});}catch(err){let errMessage=String(err);return errMessage.includes("No configuration files have been found")?(logger22.info(dedent19`[Storybook automigrate] Could not find or evaluate your Storybook main.js config directory at ${chalk13.blue(configDir)} so the automigrations will be skipped. You might be running this command in a monorepo or a non-standard project structure. If that is the case, please rerun this command by specifying the path to your Storybook config directory via the --config-dir option.`),{fixResults,fixSummary,preCheckFailure:"mainjs_not_found"}):(logger22.info(dedent19`[Storybook automigrate] ❌ Failed trying to evaluate ${chalk13.blue(mainConfigPath)} with the following error: ${errMessage}`),logger22.info("Please fix the error and try again."),{fixResults,fixSummary,preCheckFailure:"mainjs_evaluation_error"})}for(let i=0;i<fixes.length;i+=1){let f=fixes[i],result;try{let{mainConfig,previewConfigPath}=await getStorybookData({configDir,packageManager});result=await f.check({packageManager,configDir,rendererPackage,mainConfig,storybookVersion,previewConfigPath,mainConfigPath});}catch(error){logger22.info(`\u26A0\uFE0F failed to check fix ${chalk13.bold(f.id)}`),error instanceof Error&&(logger22.error(`
|
|
@@ -439,7 +444,8 @@ ${error.stack}`),fixSummary.failed[f.id]=error.message),fixResults[f.id]="check_
|
|
|
439
444
|
To learn more about this change, see: ${chalk13.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files")}
|
|
440
445
|
`},async run({dryRun,mainConfigPath,result:{nextStoriesEntries}}){logger23.info(dedent19`✅ Setting 'stories' config:
|
|
441
446
|
${JSON.stringify(nextStoriesEntries,null,2)}`),dryRun||await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{main.setFieldValue(["stories"],nextStoriesEntries);});}};var logger24=console;async function migrate(migration,{glob:glob2,dryRun,list,rename,parser}){if(list)listCodemods().forEach(key=>logger24.log(key));else if(migration)migration==="mdx-to-csf"&&!dryRun&&(await runFixes({fixes:[bareMdxStoriesGlob]}),await addStorybookBlocksPackage()),await runCodemod(migration,{glob:glob2,dryRun,logger:logger24,rename,parser});else throw new Error("Migrate: please specify a migration name or --list")}async function addStorybookBlocksPackage(){let packageManager=JsPackageManagerFactory.getPackageManager(),packageJson=await packageManager.retrievePackageJson(),versionToInstall=getStorybookVersionSpecifier(await packageManager.retrievePackageJson());logger24.info('\u2705 Adding "@storybook/blocks" package'),await packageManager.addDependencies({installAsDevDependencies:!0,packageJson},[`@storybook/blocks@${versionToInstall}`]);}var versionRegex=/(@storybook\/[^@]+)@(\S+)/,getStorybookVersion2=line=>{if(line.startsWith("npm "))return null;let match=versionRegex.exec(line);return !match||!semver.clean(match[2])?null:{package:match[1],version:match[2]}},deprecatedPackages=[{minVersion:"6.0.0-alpha.0",url:"https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#60-deprecations",deprecations:["@storybook/addon-notes","@storybook/addon-info","@storybook/addon-contexts","@storybook/addon-options","@storybook/addon-centered"]}],formatPackage=pkg2=>`${pkg2.package}@${pkg2.version}`,warnPackages=pkgs=>pkgs.forEach(pkg2=>logger.warn(`- ${formatPackage(pkg2)}`)),checkVersionConsistency=()=>{let storybookPackages=sync$1("npm",["ls"],{stdio:"pipe",shell:!0}).output.toString().split(`
|
|
442
|
-
`).map(getStorybookVersion2).filter(item=>!!item).filter(pkg2=>isCorePackage(pkg2.package));if(!storybookPackages.length){logger.warn("No storybook core packages found."),logger.warn("'npm ls | grep storybook' can show if multiple versions are installed.");return}storybookPackages.sort((a,b)=>semver.rcompare(a.version,b.version));let latestVersion=storybookPackages[0].version,outdated=storybookPackages.filter(pkg2=>pkg2.version!==latestVersion);outdated.length>0&&(logger.warn(`Found ${outdated.length} outdated packages (relative to '${formatPackage(storybookPackages[0])}')`),logger.warn("Please make sure your packages are updated to ensure a consistent experience."),warnPackages(outdated)),deprecatedPackages.forEach(({minVersion,url,deprecations})=>{if(semver.gte(latestVersion,minVersion)){let deprecated=storybookPackages.filter(pkg2=>deprecations.includes(pkg2.package));deprecated.length>0&&(logger.warn(`Found ${deprecated.length} deprecated packages since ${minVersion}`),logger.warn(`See ${url}`),warnPackages(deprecated));}});},EXTRA_FLAGS={"react-scripts@<5":["--reject","/preset-create-react-app/"]},addExtraFlags=(extraFlags,flags,{dependencies,devDependencies})=>Object.entries(extraFlags).reduce((acc,entry)=>{let[pattern,extra]=entry,[pkg2,specifier]=getPackageDetails(pattern),pkgVersion=dependencies?.[pkg2]||devDependencies?.[pkg2];return pkgVersion&&specifier&&semver.satisfies(coerceSemver(pkgVersion),specifier)?[...acc,...extra]:acc},[...flags]),addNxPackagesToReject=flags=>{let newFlags=[...flags],index=flags.indexOf("--reject");return index>-1?newFlags[index+1].endsWith("/")&&newFlags[index+1].startsWith("/")?(newFlags[index+1]=newFlags[index+1].substring(1,newFlags[index+1].length-1),newFlags[index+1]=`/(${newFlags[index+1]}|@nrwl/storybook|@nx/storybook)/`):newFlags[index+1]=`${newFlags[index+1]},@nrwl/storybook,@nx/storybook`:(newFlags.push("--reject"),newFlags.push("@nrwl/storybook,@nx/storybook")),newFlags},doUpgrade=async({tag,prerelease,skipCheck,useNpm,packageManager:pkgMgr,dryRun,configDir,yes,...options})=>{useNpm&&(useNpmWarning(),pkgMgr="npm");let packageManager=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),beforeVersion=await getStorybookCoreVersion();if(commandLog("Checking for latest versions of '@storybook/*' packages"),tag&&prerelease)throw new Error("Cannot set both --tag and --prerelease. Use --tag next to get the latest prereleae");let target="latest";prerelease?target="@next":tag&&(target=`@${tag}`);let flags=[];dryRun||flags.push("--upgrade"),flags.push("--target"),flags.push(target),flags=addExtraFlags(EXTRA_FLAGS,flags,await packageManager.retrievePackageJson()),flags=addNxPackagesToReject(flags);let check=sync$1("npx",["npm-check-updates@latest","/storybook/",...flags],{stdio:"pipe",shell:!0});logger.info(check.stdout.toString()),logger.info(check.stderr.toString());let checkSb=sync$1("npx",["npm-check-updates@latest","sb",...flags],{stdio:"pipe",shell:!0});logger.info(checkSb.stdout.toString()),logger.info(checkSb.stderr.toString()),dryRun||(commandLog("Installing upgrades"),await packageManager.installDependencies());let automigrationResults;if(skipCheck||(checkVersionConsistency(),automigrationResults=await automigrate({dryRun,yes,packageManager:pkgMgr,configDir})),!options.disableTelemetry){let afterVersion=await getStorybookCoreVersion(),{preCheckFailure,fixResults}=automigrationResults||{};telemetry("upgrade",{prerelease,tag,beforeVersion,afterVersion,...{automigrationResults:preCheckFailure?null:fixResults,automigrationPreCheckFailure:preCheckFailure||null}});}};async function upgrade(options){await withTelemetry("upgrade",{cliOptions:options},()=>doUpgrade(options));}var import_boxen5=__toESM(require_boxen());var baseTemplates={"cra/default-js":{name:"Create React App Latest (Webpack | JavaScript)",script:"npx create-react-app {{beforeDir}}",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"cra/default-ts":{name:"Create React App Latest (Webpack | TypeScript)",script:"npx create-react-app {{beforeDir}} --template typescript",skipTasks:["smoke-test","bench"],expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"}},"nextjs/13-ts":{name:"Next.js v13.5 (Webpack | TypeScript)",script:'yarn create next-app {{beforeDir}} -e https://github.com/vercel/next.js/tree/next-13/examples/hello-world && cd {{beforeDir}} && npm pkg set "dependencies.next"="^12.2.0" && yarn && git add . && git commit --amend --no-edit && cd ..',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalNextRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"],inDevelopment:!0},"nextjs/default-js":{name:"Next.js Latest (Webpack | JavaScript)",script:'yarn create next-app {{beforeDir}} --javascript --eslint --tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalNextRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"]},"nextjs/default-ts":{name:"Next.js Latest (Webpack | TypeScript)",script:'yarn create next-app {{beforeDir}} --typescript --eslint --tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalNextRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"]},"nextjs/prerelease":{name:"Next.js Prerelease (Webpack | TypeScript)",script:'npx create-next-app@canary {{beforeDir}} --typescript --eslint --tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalNextRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"]},"react-vite/default-js":{name:"React Latest (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template react",expected:{framework:"@storybook/react-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"react-vite/default-ts":{name:"React Latest (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template react-ts",expected:{framework:"@storybook/react-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},skipTasks:["bench"]},"react-webpack/18-ts":{name:"React Latest (Webpack | TypeScript)",script:"yarn create webpack5-react {{beforeDir}}",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"react-webpack/17-ts":{name:"React v17 (Webpack | TypeScript)",script:'yarn create webpack5-react {{beforeDir}} --version-react="17" --version-react-dom="17"',expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"solid-vite/default-js":{name:"SolidJS Latest (Vite | JavaScript)",script:"npx degit solidjs/templates/js {{beforeDir}}",expected:{framework:"storybook-solidjs-vite",renderer:"storybook-solidjs",builder:"@storybook/builder-vite"},inDevelopment:!0,skipTasks:["e2e-tests-dev","bench"]},"solid-vite/default-ts":{name:"SolidJS Latest (Vite | TypeScript)",script:"npx degit solidjs/templates/ts {{beforeDir}}",expected:{framework:"storybook-solidjs-vite",renderer:"storybook-solidjs",builder:"@storybook/builder-vite"},inDevelopment:!0,skipTasks:["e2e-tests-dev","bench"]},"vue3-vite/default-js":{name:"Vue v3 (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template vue",expected:{framework:"@storybook/vue3-vite",renderer:"@storybook/vue3",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"vue3-vite/default-ts":{name:"Vue v3 (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template vue-ts",expected:{framework:"@storybook/vue3-vite",renderer:"@storybook/vue3",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"html-webpack/default":{name:"HTML Latest (Webpack | JavaScript)",script:"yarn create webpack5-html {{beforeDir}}",expected:{framework:"@storybook/html-webpack5",renderer:"@storybook/html",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"html-vite/default-js":{name:"HTML Latest (Vite | JavaScript)",script:'npm create vite --yes {{beforeDir}} -- --template vanilla && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/html-vite",renderer:"@storybook/html",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"html-vite/default-ts":{name:"HTML Latest (Vite | TypeScript)",script:'npm create vite --yes {{beforeDir}} -- --template vanilla-ts && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/html-vite",renderer:"@storybook/html",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-vite/default-js":{name:"Svelte Latest (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template svelte",expected:{framework:"@storybook/svelte-vite",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-vite/default-ts":{name:"Svelte Latest (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template svelte-ts",expected:{framework:"@storybook/svelte-vite",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"angular-cli/prerelease":{name:"Angular CLI Prerelease (Webpack | TypeScript)",script:"npx -p @angular/cli@next ng new angular-v16 --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn --ssr",expected:{framework:"@storybook/angular",renderer:"@storybook/angular",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"angular-cli/default-ts":{name:"Angular CLI Latest (Webpack | TypeScript)",script:"npx -p @angular/cli ng new angular-latest --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn --ssr",expected:{framework:"@storybook/angular",renderer:"@storybook/angular",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"angular-cli/15-ts":{name:"Angular CLI v15 (Webpack | TypeScript)",script:"npx -p @angular/cli@15 ng new angular-v15 --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn",expected:{framework:"@storybook/angular",renderer:"@storybook/angular",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"svelte-kit/skeleton-js":{name:"SvelteKit Latest (Vite | JavaScript)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-js --directory={{beforeDir}} --template=skeleton --types=null --no-prettier --no-eslint --no-playwright --no-vitest --no-svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-kit/skeleton-ts":{name:"SvelteKit Latest (Vite | TypeScript)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-ts --directory={{beforeDir}} --template=skeleton --types=typescript --no-prettier --no-eslint --no-playwright --no-vitest --no-svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-kit/prerelease-ts":{name:"SvelteKit Prerelease (Vite | TypeScript)",script:"yarn create svelte-with-args --name=svelte-kit/prerelease-ts --directory={{beforeDir}} --template=skeleton --types=typescript --no-prettier --no-eslint --no-playwright --no-vitest --svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"lit-vite/default-js":{name:"Lit Latest (Vite | JavaScript)",script:'npm create vite --yes {{beforeDir}} -- --template lit && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/web-components-vite",renderer:"@storybook/web-components",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"lit-vite/default-ts":{name:"Lit Latest (Vite | TypeScript)",script:'npm create vite --yes {{beforeDir}} -- --template lit-ts && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/web-components-vite",renderer:"@storybook/web-components",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"vue-cli/default-js":{name:"Vue CLI v3 (Webpack | JavaScript)",script:'npx -p @vue/cli vue create {{beforeDir}} --default --packageManager=yarn --force --merge && cd {{beforeDir}} && echo "module.exports = {}" > webpack.config.js',expected:{framework:"@storybook/vue3-webpack5",renderer:"@storybook/vue3",builder:"@storybook/builder-webpack5"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"preact-vite/default-js":{name:"Preact Latest (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template preact",expected:{framework:"@storybook/preact-vite",renderer:"@storybook/preact",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"preact-vite/default-ts":{name:"Preact Latest (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template preact-ts",expected:{framework:"@storybook/preact-vite",renderer:"@storybook/preact",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"qwik-vite/default-ts":{name:"Qwik CLI Latest (Vite | TypeScript)",script:"yarn create qwik basic {{beforeDir}}",inDevelopment:!0,expected:{framework:"storybook-framework-qwik",renderer:"storybook-framework-qwik",builder:"storybook-framework-qwik"},skipTasks:["e2e-tests","e2e-tests-dev","bench"]},"ember/3-js":{name:"Ember v3 (Webpack | JavaScript)",script:"npx --package ember-cli@3.28.1 ember new {{beforeDir}}",inDevelopment:!0,expected:{framework:"@storybook/ember",renderer:"@storybook/ember",builder:"@storybook/builder-webpack5"}},"ember/default-js":{name:"Ember v4 (Webpack | JavaScript)",script:"npx --package ember-cli@4.12.1 ember new {{beforeDir}} --yarn && cd {{beforeDir}} && yarn add --dev @storybook/ember-cli-storybook && yarn build",inDevelopment:!0,expected:{framework:"@storybook/ember",renderer:"@storybook/ember",builder:"@storybook/builder-webpack5"}}},internalTemplates={"internal/swc-webpack":{...baseTemplates["react-webpack/18-ts"],name:"SWC (react-webpack/18-ts)",isInternal:!0,inDevelopment:!0,modifications:{mainConfig:{framework:{name:"@storybook/react-webpack5",options:{builder:{useSWC:!0}}}}},skipTasks:["bench"]},"internal/react16-webpack":{name:"React 16 (Webpack | TypeScript)",script:"yarn create webpack5-react {{beforeDir}} --version-react=16 --version-react-dom=16 --version-@types/react=16 --version-@types/react-dom=16",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"],isInternal:!0},"internal/server-webpack5":{name:"Server Webpack5",script:'yarn init -y && echo "module.exports = {}" > webpack.config.js',expected:{framework:"@storybook/server-webpack5",renderer:"@storybook/server",builder:"@storybook/builder-webpack5"},isInternal:!0,skipTasks:["bench"]}},benchTemplates={"bench/react-vite-default-ts":{...baseTemplates["react-vite/default-ts"],name:"Bench (react-vite/default-ts)",isInternal:!0,modifications:{skipTemplateStories:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests","chromatic"]},"bench/react-webpack-18-ts":{...baseTemplates["react-webpack/18-ts"],name:"Bench (react-webpack/18-ts)",isInternal:!0,modifications:{skipTemplateStories:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests","chromatic"]},"bench/react-vite-default-ts-nodocs":{...baseTemplates["react-vite/default-ts"],name:"Bench (react-vite/default-ts, no docs)",isInternal:!0,modifications:{skipTemplateStories:!0,disableDocs:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests","chromatic"]},"bench/react-vite-default-ts-test-build":{...baseTemplates["react-vite/default-ts"],name:"Bench (react-vite/default-ts, test-build)",isInternal:!0,modifications:{skipTemplateStories:!0,testBuild:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests"]},"bench/react-webpack-18-ts-test-build":{...baseTemplates["react-webpack/18-ts"],name:"Bench (react-webpack/18-ts, test-build)",isInternal:!0,modifications:{skipTemplateStories:!0,testBuild:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests"]}},allTemplates={...baseTemplates,...internalTemplates,...benchTemplates};var logger26=console,toChoices=c=>({title:allTemplates[c].name,value:c}),sandbox=async({output:outputDirectory,filterValue,branch,init})=>{let selectedConfig=allTemplates[filterValue],selectedTemplate=selectedConfig?filterValue:null;if(!selectedConfig){let filterRegex=new RegExp(`^${filterValue||""}`,"i"),keys=Object.keys(allTemplates),choices=keys.reduce((acc,group)=>{let current=allTemplates[group];return (!filterValue||current.name.match(filterRegex)||group.match(filterRegex)||current.expected.builder.match(filterRegex)||current.expected.framework.match(filterRegex)||current.expected.renderer.match(filterRegex))&&acc.push(group),acc},[]);if(choices.length===0&&(logger26.info((0, import_boxen5.default)(dedent`
|
|
447
|
+
`).map(getStorybookVersion2).filter(item=>!!item).filter(pkg2=>isCorePackage(pkg2.package));if(!storybookPackages.length){logger.warn("No storybook core packages found."),logger.warn("'npm ls | grep storybook' can show if multiple versions are installed.");return}storybookPackages.sort((a,b)=>semver.rcompare(a.version,b.version));let latestVersion=storybookPackages[0].version,outdated=storybookPackages.filter(pkg2=>pkg2.version!==latestVersion);outdated.length>0&&(logger.warn(`Found ${outdated.length} outdated packages (relative to '${formatPackage(storybookPackages[0])}')`),logger.warn("Please make sure your packages are updated to ensure a consistent experience."),warnPackages(outdated)),deprecatedPackages.forEach(({minVersion,url,deprecations})=>{if(semver.gte(latestVersion,minVersion)){let deprecated=storybookPackages.filter(pkg2=>deprecations.includes(pkg2.package));deprecated.length>0&&(logger.warn(`Found ${deprecated.length} deprecated packages since ${minVersion}`),logger.warn(`See ${url}`),warnPackages(deprecated));}});},EXTRA_FLAGS={"react-scripts@<5":["--reject","/preset-create-react-app/"]},addExtraFlags=(extraFlags,flags,{dependencies,devDependencies})=>Object.entries(extraFlags).reduce((acc,entry)=>{let[pattern,extra]=entry,[pkg2,specifier]=getPackageDetails(pattern),pkgVersion=dependencies?.[pkg2]||devDependencies?.[pkg2];return pkgVersion&&specifier&&semver.satisfies(coerceSemver(pkgVersion),specifier)?[...acc,...extra]:acc},[...flags]),addNxPackagesToReject=flags=>{let newFlags=[...flags],index=flags.indexOf("--reject");return index>-1?newFlags[index+1].endsWith("/")&&newFlags[index+1].startsWith("/")?(newFlags[index+1]=newFlags[index+1].substring(1,newFlags[index+1].length-1),newFlags[index+1]=`"/(${newFlags[index+1]}|@nrwl/storybook|@nx/storybook)/"`):newFlags[index+1]=`${newFlags[index+1]},@nrwl/storybook,@nx/storybook`:(newFlags.push("--reject"),newFlags.push("@nrwl/storybook,@nx/storybook")),newFlags},doUpgrade=async({tag,prerelease,skipCheck,packageManager:pkgMgr,dryRun,configDir,yes,...options})=>{let packageManager=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),beforeVersion=await getStorybookCoreVersion();if(commandLog(`Checking for latest versions of '@storybook/*' packages
|
|
448
|
+
`),tag&&prerelease)throw new ConflictingVersionTagsError;let target="latest";prerelease?target="@next":tag&&(target=`@${tag}`);let flags=[];dryRun||flags.push("--upgrade"),flags.push("--target"),flags.push(target),flags=addExtraFlags(EXTRA_FLAGS,flags,await packageManager.retrievePackageJson()),flags=addNxPackagesToReject(flags);let command2="npx",checkArgs=["npm-check-updates@latest","/storybook/",...flags],check=sync$1(command2,checkArgs,{stdio:"pipe",shell:!0});if(check.stderr&&!check.stderr.toString().includes("npm notice"))throw new UpgradeStorybookPackagesError({command:command2,args:checkArgs,errorMessage:check.stderr.toString()});logger.info(check.stdout.toString());let checkSbArgs=["npm-check-updates@latest","sb",...flags],checkSb=sync$1(command2,checkSbArgs,{stdio:"pipe",shell:!0});if(logger.info(checkSb.stdout.toString()),logger.info(checkSb.stderr.toString()),checkSb.stderr&&!checkSb.stderr.toString().includes("npm notice"))throw new UpgradeStorybookPackagesError({command:command2,args:checkSbArgs,errorMessage:checkSb.stderr.toString()});dryRun||(commandLog("Installing upgrades"),await packageManager.installDependencies());let automigrationResults;if(skipCheck||(checkVersionConsistency(),automigrationResults=await automigrate({dryRun,yes,packageManager:pkgMgr,configDir})),!options.disableTelemetry){let afterVersion=await getStorybookCoreVersion(),{preCheckFailure,fixResults}=automigrationResults||{};telemetry("upgrade",{prerelease,tag,beforeVersion,afterVersion,...{automigrationResults:preCheckFailure?null:fixResults,automigrationPreCheckFailure:preCheckFailure||null}});}};async function upgrade(options){await withTelemetry("upgrade",{cliOptions:options},()=>doUpgrade(options));}var import_boxen5=__toESM(require_boxen());var baseTemplates={"cra/default-js":{name:"Create React App Latest (Webpack | JavaScript)",script:"npx create-react-app {{beforeDir}}",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"cra/default-ts":{name:"Create React App Latest (Webpack | TypeScript)",script:"npx create-react-app {{beforeDir}} --template typescript",skipTasks:["smoke-test","bench"],expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"}},"nextjs/13-ts":{name:"Next.js v13.5 (Webpack | TypeScript)",script:'yarn create next-app {{beforeDir}} -e https://github.com/vercel/next.js/tree/next-13/examples/hello-world && cd {{beforeDir}} && npm pkg set "dependencies.next"="^12.2.0" && yarn && git add . && git commit --amend --no-edit && cd ..',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalNextRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"],inDevelopment:!0},"nextjs/default-js":{name:"Next.js Latest (Webpack | JavaScript)",script:'yarn create next-app {{beforeDir}} --javascript --eslint --tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalNextRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"]},"nextjs/default-ts":{name:"Next.js Latest (Webpack | TypeScript)",script:'yarn create next-app {{beforeDir}} --typescript --eslint --tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalNextRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"]},"nextjs/prerelease":{name:"Next.js Prerelease (Webpack | TypeScript)",script:'npx create-next-app@canary {{beforeDir}} --typescript --eslint --tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalNextRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"]},"react-vite/default-js":{name:"React Latest (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template react",expected:{framework:"@storybook/react-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"react-vite/default-ts":{name:"React Latest (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template react-ts",expected:{framework:"@storybook/react-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},skipTasks:["bench"]},"react-webpack/18-ts":{name:"React Latest (Webpack | TypeScript)",script:"yarn create webpack5-react {{beforeDir}}",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"react-webpack/17-ts":{name:"React v17 (Webpack | TypeScript)",script:'yarn create webpack5-react {{beforeDir}} --version-react="17" --version-react-dom="17"',expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"solid-vite/default-js":{name:"SolidJS Latest (Vite | JavaScript)",script:"npx degit solidjs/templates/js {{beforeDir}}",expected:{framework:"storybook-solidjs-vite",renderer:"storybook-solidjs",builder:"@storybook/builder-vite"},inDevelopment:!0,skipTasks:["e2e-tests-dev","bench"]},"solid-vite/default-ts":{name:"SolidJS Latest (Vite | TypeScript)",script:"npx degit solidjs/templates/ts {{beforeDir}}",expected:{framework:"storybook-solidjs-vite",renderer:"storybook-solidjs",builder:"@storybook/builder-vite"},inDevelopment:!0,skipTasks:["e2e-tests-dev","bench"]},"vue3-vite/default-js":{name:"Vue v3 (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template vue",expected:{framework:"@storybook/vue3-vite",renderer:"@storybook/vue3",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"vue3-vite/default-ts":{name:"Vue v3 (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template vue-ts",expected:{framework:"@storybook/vue3-vite",renderer:"@storybook/vue3",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"html-webpack/default":{name:"HTML Latest (Webpack | JavaScript)",script:"yarn create webpack5-html {{beforeDir}}",expected:{framework:"@storybook/html-webpack5",renderer:"@storybook/html",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"html-vite/default-js":{name:"HTML Latest (Vite | JavaScript)",script:'npm create vite --yes {{beforeDir}} -- --template vanilla && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/html-vite",renderer:"@storybook/html",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"html-vite/default-ts":{name:"HTML Latest (Vite | TypeScript)",script:'npm create vite --yes {{beforeDir}} -- --template vanilla-ts && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/html-vite",renderer:"@storybook/html",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-vite/default-js":{name:"Svelte Latest (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template svelte",expected:{framework:"@storybook/svelte-vite",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-vite/default-ts":{name:"Svelte Latest (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template svelte-ts",expected:{framework:"@storybook/svelte-vite",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"angular-cli/prerelease":{name:"Angular CLI Prerelease (Webpack | TypeScript)",script:"npx -p @angular/cli@next ng new angular-v16 --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn --ssr",expected:{framework:"@storybook/angular",renderer:"@storybook/angular",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"angular-cli/default-ts":{name:"Angular CLI Latest (Webpack | TypeScript)",script:"npx -p @angular/cli ng new angular-latest --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn --ssr",expected:{framework:"@storybook/angular",renderer:"@storybook/angular",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"angular-cli/15-ts":{name:"Angular CLI v15 (Webpack | TypeScript)",script:"npx -p @angular/cli@15 ng new angular-v15 --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn",expected:{framework:"@storybook/angular",renderer:"@storybook/angular",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"svelte-kit/skeleton-js":{name:"SvelteKit Latest (Vite | JavaScript)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-js --directory={{beforeDir}} --template=skeleton --types=null --no-prettier --no-eslint --no-playwright --no-vitest --no-svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-kit/skeleton-ts":{name:"SvelteKit Latest (Vite | TypeScript)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-ts --directory={{beforeDir}} --template=skeleton --types=typescript --no-prettier --no-eslint --no-playwright --no-vitest --no-svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-kit/prerelease-ts":{name:"SvelteKit Prerelease (Vite | TypeScript)",script:"yarn create svelte-with-args --name=svelte-kit/prerelease-ts --directory={{beforeDir}} --template=skeleton --types=typescript --no-prettier --no-eslint --no-playwright --no-vitest --svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"lit-vite/default-js":{name:"Lit Latest (Vite | JavaScript)",script:'npm create vite --yes {{beforeDir}} -- --template lit && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/web-components-vite",renderer:"@storybook/web-components",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"lit-vite/default-ts":{name:"Lit Latest (Vite | TypeScript)",script:'npm create vite --yes {{beforeDir}} -- --template lit-ts && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/web-components-vite",renderer:"@storybook/web-components",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"vue-cli/default-js":{name:"Vue CLI v3 (Webpack | JavaScript)",script:'npx -p @vue/cli vue create {{beforeDir}} --default --packageManager=yarn --force --merge && cd {{beforeDir}} && echo "module.exports = {}" > webpack.config.js',expected:{framework:"@storybook/vue3-webpack5",renderer:"@storybook/vue3",builder:"@storybook/builder-webpack5"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"preact-vite/default-js":{name:"Preact Latest (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template preact",expected:{framework:"@storybook/preact-vite",renderer:"@storybook/preact",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"preact-vite/default-ts":{name:"Preact Latest (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template preact-ts",expected:{framework:"@storybook/preact-vite",renderer:"@storybook/preact",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"qwik-vite/default-ts":{name:"Qwik CLI Latest (Vite | TypeScript)",script:"yarn create qwik basic {{beforeDir}}",inDevelopment:!0,expected:{framework:"storybook-framework-qwik",renderer:"storybook-framework-qwik",builder:"storybook-framework-qwik"},skipTasks:["e2e-tests","e2e-tests-dev","bench"]},"ember/3-js":{name:"Ember v3 (Webpack | JavaScript)",script:"npx --package ember-cli@3.28.1 ember new {{beforeDir}}",inDevelopment:!0,expected:{framework:"@storybook/ember",renderer:"@storybook/ember",builder:"@storybook/builder-webpack5"}},"ember/default-js":{name:"Ember v4 (Webpack | JavaScript)",script:"npx --package ember-cli@4.12.1 ember new {{beforeDir}} --yarn && cd {{beforeDir}} && yarn add --dev @storybook/ember-cli-storybook && yarn build",inDevelopment:!0,expected:{framework:"@storybook/ember",renderer:"@storybook/ember",builder:"@storybook/builder-webpack5"}}},internalTemplates={"internal/swc-webpack":{...baseTemplates["react-webpack/18-ts"],name:"SWC (react-webpack/18-ts)",isInternal:!0,inDevelopment:!0,modifications:{mainConfig:{framework:{name:"@storybook/react-webpack5",options:{builder:{useSWC:!0}}}}},skipTasks:["bench"]},"internal/react16-webpack":{name:"React 16 (Webpack | TypeScript)",script:"yarn create webpack5-react {{beforeDir}} --version-react=16 --version-react-dom=16 --version-@types/react=16 --version-@types/react-dom=16",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"],isInternal:!0},"internal/server-webpack5":{name:"Server Webpack5",script:'yarn init -y && echo "module.exports = {}" > webpack.config.js',expected:{framework:"@storybook/server-webpack5",renderer:"@storybook/server",builder:"@storybook/builder-webpack5"},isInternal:!0,skipTasks:["bench"]}},benchTemplates={"bench/react-vite-default-ts":{...baseTemplates["react-vite/default-ts"],name:"Bench (react-vite/default-ts)",isInternal:!0,modifications:{skipTemplateStories:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests","chromatic"]},"bench/react-webpack-18-ts":{...baseTemplates["react-webpack/18-ts"],name:"Bench (react-webpack/18-ts)",isInternal:!0,modifications:{skipTemplateStories:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests","chromatic"]},"bench/react-vite-default-ts-nodocs":{...baseTemplates["react-vite/default-ts"],name:"Bench (react-vite/default-ts, no docs)",isInternal:!0,modifications:{skipTemplateStories:!0,disableDocs:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests","chromatic"]},"bench/react-vite-default-ts-test-build":{...baseTemplates["react-vite/default-ts"],name:"Bench (react-vite/default-ts, test-build)",isInternal:!0,modifications:{skipTemplateStories:!0,testBuild:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests"]},"bench/react-webpack-18-ts-test-build":{...baseTemplates["react-webpack/18-ts"],name:"Bench (react-webpack/18-ts, test-build)",isInternal:!0,modifications:{skipTemplateStories:!0,testBuild:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests"]}},allTemplates={...baseTemplates,...internalTemplates,...benchTemplates};var logger26=console,toChoices=c=>({title:allTemplates[c].name,value:c}),sandbox=async({output:outputDirectory,filterValue,branch,init})=>{let selectedConfig=allTemplates[filterValue],selectedTemplate=selectedConfig?filterValue:null;if(!selectedConfig){let filterRegex=new RegExp(`^${filterValue||""}`,"i"),keys=Object.keys(allTemplates),choices=keys.reduce((acc,group)=>{let current=allTemplates[group];return (!filterValue||current.name.match(filterRegex)||group.match(filterRegex)||current.expected.builder.match(filterRegex)||current.expected.framework.match(filterRegex)||current.expected.renderer.match(filterRegex))&&acc.push(group),acc},[]);if(choices.length===0&&(logger26.info((0, import_boxen5.default)(dedent`
|
|
443
449
|
🔎 You filtered out all templates. 🔍
|
|
444
450
|
|
|
445
451
|
After filtering all the templates with "${chalk13.yellow(filterValue)}", we found no results. Please try again with a different filter.
|
|
@@ -492,8 +498,8 @@ yarn storybook`):`Recreate your setup, then ${chalk13.yellow("npx storybook@late
|
|
|
492
498
|
|
|
493
499
|
-------
|
|
494
500
|
|
|
495
|
-
`),{borderStyle:"round",padding:1,title:"Diagnostics",borderColor:"red"})),await move(TEMP_LOG_FILE_PATH2,join(process.cwd(),LOG_FILE_NAME2),{overwrite:!0})):(logger29.info("\u{1F973} Your Storybook project looks good!"),await remove(TEMP_LOG_FILE_PATH2)),logger29.info(),cleanup2();};addToGlobalContext("cliVersion",versions_default.storybook);var readUpResult=sync({cwd:__dirname});invariant3(readUpResult,"Failed to find the closest package.json file.");var pkg=readUpResult.packageJson,consoleLogger=console,command=name=>program.command(name).option("--disable-telemetry","disable sending telemetry data",process.env.STORYBOOK_DISABLE_TELEMETRY&&process.env.STORYBOOK_DISABLE_TELEMETRY!=="false").option("--debug","Get more logs in debug mode",!1).option("--enable-crash-reports","enable sending crash reports to telemetry data");command("init").description("Initialize Storybook into your project.").option("-f --force","Force add Storybook").option("-s --skip-install","Skip installing deps").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager for installing deps").option("
|
|
496
|
-
Storybook Environment Info:`));let activePackageManager=(await JsPackageManagerFactory.getPackageManager()).type.replace(/\d/,""),output=await envinfo.run({System:["OS","CPU","Shell"],Binaries:["Node","Yarn","npm","pnpm"],Browsers:["Chrome","Edge","Firefox","Safari"],npmPackages:"{@storybook/*,*storybook*,sb,chromatic}",npmGlobalPackages:"{@storybook/*,*storybook*,sb,chromatic}"}),activePackageManagerLine=output.match(new RegExp(`${activePackageManager}:.*`,"i"));consoleLogger.log(output.replace(activePackageManagerLine,chalk13.bold(`${activePackageManagerLine} <----- active`)));});command("migrate [migration]").description("Run a Storybook codemod migration on your source files").option("-l --list","List available migrations").option("-g --glob <glob>","Glob for files upon which to apply the migration","**/*.js").option("-p --parser <babel | babylon | flow | ts | tsx>","jscodeshift parser").option("-n --dry-run","Dry run: verify the migration exists and show the files to which it will be applied").option("-r --rename <from-to>",'Rename suffix of matching files after codemod has been applied, e.g. ".js:.ts"').action((migration,{configDir,glob:glob2,dryRun,list,rename,parser})=>{migrate(migration,{configDir,glob:glob2,dryRun,list,rename,parser,logger:consoleLogger}).catch(err=>{logger.error(err),process.exit(1);});});command("sandbox [filterValue]").alias("repro").description("Create a sandbox from a set of possible templates").option("-o --output <outDir>","Define an output directory").option("-b --branch <branch>","Define the branch to download from","next").option("--no-init","Whether to download a template without an initialized Storybook",!1).action((filterValue,options)=>sandbox({filterValue,...options}).catch(e=>{logger.error(e),process.exit(1);}));command("link <repo-url-or-directory>").description("Pull down a repro from a URL (or a local directory), link it, and run storybook").option("--local","Link a local directory already in your file system").option("--no-start","Start the storybook",!0).action((target,{local,start})=>link({target,local,start}).catch(e=>{logger.error(e),process.exit(1);}));command("automigrate [fixId]").description("Check storybook for incompatibilities or migrations and apply fixes").option("-y --yes","Skip prompting the user").option("-n --dry-run","Only check for fixes, do not actually run them").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager").option("-
|
|
501
|
+
`),{borderStyle:"round",padding:1,title:"Diagnostics",borderColor:"red"})),await move(TEMP_LOG_FILE_PATH2,join(process.cwd(),LOG_FILE_NAME2),{overwrite:!0})):(logger29.info("\u{1F973} Your Storybook project looks good!"),await remove(TEMP_LOG_FILE_PATH2)),logger29.info(),cleanup2();};addToGlobalContext("cliVersion",versions_default.storybook);var readUpResult=sync({cwd:__dirname});invariant3(readUpResult,"Failed to find the closest package.json file.");var pkg=readUpResult.packageJson,consoleLogger=console,command=name=>program.command(name).option("--disable-telemetry","disable sending telemetry data",process.env.STORYBOOK_DISABLE_TELEMETRY&&process.env.STORYBOOK_DISABLE_TELEMETRY!=="false").option("--debug","Get more logs in debug mode",!1).option("--enable-crash-reports","enable sending crash reports to telemetry data");command("init").description("Initialize Storybook into your project.").option("-f --force","Force add Storybook").option("-s --skip-install","Skip installing deps").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager for installing deps").option("--use-pnp","Enable pnp mode for Yarn 2+").option("-p --parser <babel | babylon | flow | ts | tsx>","jscodeshift parser").option("-t --type <type>","Add Storybook for a specific project type").option("-y --yes","Answer yes to all prompts").option("-b --builder <webpack5 | vite>","Builder library").option("-l --linkable","Prepare installation for link (contributor helper)").action(options=>{initiate(options,pkg).catch(()=>process.exit(1));});command("add <addon>").description("Add an addon to your Storybook").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager for installing dependencies").option("-s --skip-postinstall","Skip package specific postinstall config modifications").action((addonName,options)=>add(addonName,options));command("babelrc").description("generate the default storybook babel config into your current working directory").action(()=>generateStorybookBabelConfigInCWD());command("upgrade").description("Upgrade your Storybook packages to the latest").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager for installing dependencies").option("-y --yes","Skip prompting the user").option("-n --dry-run","Only check for upgrades, do not install").option("-t --tag <tag>","Upgrade to a certain npm dist-tag (e.g. next, prerelease)").option("-p --prerelease","Upgrade to the pre-release packages").option("-s --skip-check","Skip postinstall version and automigration checks").option("-c, --config-dir <dir-name>","Directory where to load Storybook configurations from").action(async options=>upgrade(options).catch(()=>process.exit(1)));command("info").description("Prints debugging information about the local environment").action(async()=>{consoleLogger.log(chalk13.bold(`
|
|
502
|
+
Storybook Environment Info:`));let activePackageManager=(await JsPackageManagerFactory.getPackageManager()).type.replace(/\d/,""),output=await envinfo.run({System:["OS","CPU","Shell"],Binaries:["Node","Yarn","npm","pnpm"],Browsers:["Chrome","Edge","Firefox","Safari"],npmPackages:"{@storybook/*,*storybook*,sb,chromatic}",npmGlobalPackages:"{@storybook/*,*storybook*,sb,chromatic}"}),activePackageManagerLine=output.match(new RegExp(`${activePackageManager}:.*`,"i"));consoleLogger.log(output.replace(activePackageManagerLine,chalk13.bold(`${activePackageManagerLine} <----- active`)));});command("migrate [migration]").description("Run a Storybook codemod migration on your source files").option("-l --list","List available migrations").option("-g --glob <glob>","Glob for files upon which to apply the migration","**/*.js").option("-p --parser <babel | babylon | flow | ts | tsx>","jscodeshift parser").option("-n --dry-run","Dry run: verify the migration exists and show the files to which it will be applied").option("-r --rename <from-to>",'Rename suffix of matching files after codemod has been applied, e.g. ".js:.ts"').action((migration,{configDir,glob:glob2,dryRun,list,rename,parser})=>{migrate(migration,{configDir,glob:glob2,dryRun,list,rename,parser,logger:consoleLogger}).catch(err=>{logger.error(err),process.exit(1);});});command("sandbox [filterValue]").alias("repro").description("Create a sandbox from a set of possible templates").option("-o --output <outDir>","Define an output directory").option("-b --branch <branch>","Define the branch to download from","next").option("--no-init","Whether to download a template without an initialized Storybook",!1).action((filterValue,options)=>sandbox({filterValue,...options}).catch(e=>{logger.error(e),process.exit(1);}));command("link <repo-url-or-directory>").description("Pull down a repro from a URL (or a local directory), link it, and run storybook").option("--local","Link a local directory already in your file system").option("--no-start","Start the storybook",!0).action((target,{local,start})=>link({target,local,start}).catch(e=>{logger.error(e),process.exit(1);}));command("automigrate [fixId]").description("Check storybook for incompatibilities or migrations and apply fixes").option("-y --yes","Skip prompting the user").option("-n --dry-run","Only check for fixes, do not actually run them").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager").option("-l --list","List available migrations").option("-c, --config-dir <dir-name>","Directory of Storybook configurations to migrate").option("-s --skip-install","Skip installing deps").option("--renderer <renderer-pkg-name>","The renderer package for the framework Storybook is using.").action(async(fixId,options)=>{await automigrate({fixId,...options}).catch(e=>{logger.error(e),process.exit(1);});});command("doctor").description("Check Storybook for known problems and provide suggestions or fixes").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager").option("-c, --config-dir <dir-name>","Directory of Storybook configuration").action(async options=>{await doctor(options).catch(e=>{logger.error(e),process.exit(1);});});command("dev").option("-p, --port <number>","Port to run Storybook",str=>parseInt(str,10)).option("-h, --host <string>","Host to run Storybook").option("-c, --config-dir <dir-name>","Directory where to load Storybook configurations from").option("--https","Serve Storybook over HTTPS. Note: You must provide your own certificate information.").option("--ssl-ca <ca>","Provide an SSL certificate authority. (Optional with --https, required if using a self-signed certificate)",parseList).option("--ssl-cert <cert>","Provide an SSL certificate. (Required with --https)").option("--ssl-key <key>","Provide an SSL key. (Required with --https)").option("--smoke-test","Exit after successful start").option("--ci","CI mode (skip interactive prompts, don't open browser)").option("--no-open","Do not open Storybook automatically in the browser").option("--loglevel <level>","Control level of logging during build").option("--quiet","Suppress verbose build output").option("--no-version-updates","Suppress update check",!0).option("--debug-webpack","Display final webpack configurations for debugging purposes").option("--webpack-stats-json [directory]","Write Webpack Stats JSON to disk").option("--preview-url <string>","Disables the default storybook preview and lets your use your own").option("--force-build-preview","Build the preview iframe even if you are using --preview-url").option("--docs","Build a documentation-only site using addon-docs").option("--exact-port","Exit early if the desired port is not available").option("--initial-path [path]","URL path to be appended when visiting Storybook for the first time").action(async options=>{logger.setLevel(program.loglevel),consoleLogger.log(chalk13.bold(`${pkg.name} v${pkg.version}`)+chalk13.reset(`
|
|
497
503
|
`)),getEnvConfig(options,{port:"SBCONFIG_PORT",host:"SBCONFIG_HOSTNAME",staticDir:"SBCONFIG_STATIC_DIR",configDir:"SBCONFIG_CONFIG_DIR",ci:"CI"}),parseInt(`${options.port}`,10)&&(options.port=parseInt(`${options.port}`,10)),await dev({...options,packageJson:pkg}).catch(()=>process.exit(1));});command("build").option("-o, --output-dir <dir-name>","Directory where to store built files").option("-c, --config-dir <dir-name>","Directory where to load Storybook configurations from").option("--quiet","Suppress verbose build output").option("--loglevel <level>","Control level of logging during build").option("--debug-webpack","Display final webpack configurations for debugging purposes").option("--webpack-stats-json [directory]","Write Webpack Stats JSON to disk").option("--preview-url <string>","Disables the default storybook preview and lets your use your own").option("--force-build-preview","Build the preview iframe even if you are using --preview-url").option("--docs","Build a documentation-only site using addon-docs").option("--test","Build stories optimized for testing purposes.").action(async options=>{process.env.NODE_ENV=process.env.NODE_ENV||"production",logger.setLevel(program.loglevel),consoleLogger.log(chalk13.bold(`${pkg.name} v${pkg.version}
|
|
498
504
|
`)),getEnvConfig(options,{staticDir:"SBCONFIG_STATIC_DIR",outputDir:"SBCONFIG_OUTPUT_DIR",configDir:"SBCONFIG_CONFIG_DIR"}),await build({...options,packageJson:pkg,test:!!options.test||process.env.SB_TESTBUILD==="true"}).catch(()=>process.exit(1));});program.on("command:*",([invalidCmd])=>{consoleLogger.error(` Invalid command: %s.
|
|
499
505
|
See --help for a list of available commands.`,invalidCmd);let suggestion=program.commands.map(cmd=>cmd._name).find(cmd=>leven(cmd,invalidCmd)<3);suggestion&&consoleLogger.info(`
|
package/dist/index.d.ts
CHANGED
|
@@ -86,8 +86,6 @@ declare const _default: {
|
|
|
86
86
|
storybook: string;
|
|
87
87
|
};
|
|
88
88
|
|
|
89
|
-
declare const useNpmWarning: () => void;
|
|
90
|
-
|
|
91
89
|
type PackageJsonWithDepsAndDevDeps = PackageJson & Required<Pick<PackageJson, 'dependencies' | 'devDependencies'>>;
|
|
92
90
|
type PackageJsonWithMaybeDeps = Partial<Pick<PackageJson, 'dependencies' | 'devDependencies' | 'peerDependencies' | 'files'>>;
|
|
93
91
|
|
|
@@ -304,4 +302,4 @@ declare const createLogStream: (logFileName?: string) => Promise<{
|
|
|
304
302
|
}>;
|
|
305
303
|
declare const isCorePackage: (pkg: string) => boolean;
|
|
306
304
|
|
|
307
|
-
export { JsPackageManager, JsPackageManagerFactory, PackageJsonWithDepsAndDevDeps, PackageJsonWithMaybeDeps, PackageManagerName, createLogStream, getEnvConfig, getPackageDetails, getStorybookVersion, isCorePackage, parseList,
|
|
305
|
+
export { JsPackageManager, JsPackageManagerFactory, PackageJsonWithDepsAndDevDeps, PackageJsonWithMaybeDeps, PackageManagerName, createLogStream, getEnvConfig, getPackageDetails, getStorybookVersion, isCorePackage, parseList, _default as versions };
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var src_exports={};__export(src_exports,{JsPackageManager:()=>JsPackageManager,JsPackageManagerFactory:()=>JsPackageManagerFactory,createLogStream:()=>createLogStream,getEnvConfig:()=>getEnvConfig,getPackageDetails:()=>getPackageDetails,getStorybookVersion:()=>getStorybookVersion,isCorePackage:()=>isCorePackage,parseList:()=>parseList,
|
|
1
|
+
"use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var src_exports={};__export(src_exports,{JsPackageManager:()=>JsPackageManager,JsPackageManagerFactory:()=>JsPackageManagerFactory,createLogStream:()=>createLogStream,getEnvConfig:()=>getEnvConfig,getPackageDetails:()=>getPackageDetails,getStorybookVersion:()=>getStorybookVersion,isCorePackage:()=>isCorePackage,parseList:()=>parseList,versions:()=>versions_default});module.exports=__toCommonJS(src_exports);var versions_default={"@storybook/addon-a11y":"8.0.0-alpha.7","@storybook/addon-actions":"8.0.0-alpha.7","@storybook/addon-backgrounds":"8.0.0-alpha.7","@storybook/addon-controls":"8.0.0-alpha.7","@storybook/addon-docs":"8.0.0-alpha.7","@storybook/addon-essentials":"8.0.0-alpha.7","@storybook/addon-highlight":"8.0.0-alpha.7","@storybook/addon-interactions":"8.0.0-alpha.7","@storybook/addon-jest":"8.0.0-alpha.7","@storybook/addon-links":"8.0.0-alpha.7","@storybook/addon-mdx-gfm":"8.0.0-alpha.7","@storybook/addon-measure":"8.0.0-alpha.7","@storybook/addon-outline":"8.0.0-alpha.7","@storybook/addon-storysource":"8.0.0-alpha.7","@storybook/addon-themes":"8.0.0-alpha.7","@storybook/addon-toolbars":"8.0.0-alpha.7","@storybook/addon-viewport":"8.0.0-alpha.7","@storybook/angular":"8.0.0-alpha.7","@storybook/blocks":"8.0.0-alpha.7","@storybook/builder-manager":"8.0.0-alpha.7","@storybook/builder-vite":"8.0.0-alpha.7","@storybook/builder-webpack5":"8.0.0-alpha.7","@storybook/channels":"8.0.0-alpha.7","@storybook/cli":"8.0.0-alpha.7","@storybook/client-logger":"8.0.0-alpha.7","@storybook/codemod":"8.0.0-alpha.7","@storybook/components":"8.0.0-alpha.7","@storybook/core-common":"8.0.0-alpha.7","@storybook/core-events":"8.0.0-alpha.7","@storybook/core-server":"8.0.0-alpha.7","@storybook/core-webpack":"8.0.0-alpha.7","@storybook/csf-plugin":"8.0.0-alpha.7","@storybook/csf-tools":"8.0.0-alpha.7","@storybook/docs-tools":"8.0.0-alpha.7","@storybook/ember":"8.0.0-alpha.7","@storybook/html":"8.0.0-alpha.7","@storybook/html-vite":"8.0.0-alpha.7","@storybook/html-webpack5":"8.0.0-alpha.7","@storybook/instrumenter":"8.0.0-alpha.7","@storybook/manager":"8.0.0-alpha.7","@storybook/manager-api":"8.0.0-alpha.7","@storybook/nextjs":"8.0.0-alpha.7","@storybook/node-logger":"8.0.0-alpha.7","@storybook/preact":"8.0.0-alpha.7","@storybook/preact-vite":"8.0.0-alpha.7","@storybook/preact-webpack5":"8.0.0-alpha.7","@storybook/preset-create-react-app":"8.0.0-alpha.7","@storybook/preset-html-webpack":"8.0.0-alpha.7","@storybook/preset-preact-webpack":"8.0.0-alpha.7","@storybook/preset-react-webpack":"8.0.0-alpha.7","@storybook/preset-server-webpack":"8.0.0-alpha.7","@storybook/preset-svelte-webpack":"8.0.0-alpha.7","@storybook/preset-vue3-webpack":"8.0.0-alpha.7","@storybook/preset-web-components-webpack":"8.0.0-alpha.7","@storybook/preview":"8.0.0-alpha.7","@storybook/preview-api":"8.0.0-alpha.7","@storybook/react":"8.0.0-alpha.7","@storybook/react-dom-shim":"8.0.0-alpha.7","@storybook/react-vite":"8.0.0-alpha.7","@storybook/react-webpack5":"8.0.0-alpha.7","@storybook/router":"8.0.0-alpha.7","@storybook/server":"8.0.0-alpha.7","@storybook/server-webpack5":"8.0.0-alpha.7","@storybook/source-loader":"8.0.0-alpha.7","@storybook/svelte":"8.0.0-alpha.7","@storybook/svelte-vite":"8.0.0-alpha.7","@storybook/svelte-webpack5":"8.0.0-alpha.7","@storybook/sveltekit":"8.0.0-alpha.7","@storybook/telemetry":"8.0.0-alpha.7","@storybook/test":"8.0.0-alpha.7","@storybook/theming":"8.0.0-alpha.7","@storybook/types":"8.0.0-alpha.7","@storybook/vue3":"8.0.0-alpha.7","@storybook/vue3-vite":"8.0.0-alpha.7","@storybook/vue3-webpack5":"8.0.0-alpha.7","@storybook/web-components":"8.0.0-alpha.7","@storybook/web-components-vite":"8.0.0-alpha.7","@storybook/web-components-webpack5":"8.0.0-alpha.7",sb:"8.0.0-alpha.7",storybook:"8.0.0-alpha.7"};var import_node_path=__toESM(require("path")),import_cross_spawn=require("cross-spawn"),import_find_up6=require("find-up");var import_sort=__toESM(require("semver/functions/sort")),import_os=require("os"),import_ts_dedent2=__toESM(require("ts-dedent")),import_find_up2=require("find-up"),import_fs2=require("fs"),import_path3=__toESM(require("path")),import_semver4=__toESM(require("semver")),import_node_logger=require("@storybook/node-logger");var import_chalk2=__toESM(require("chalk")),import_semver3=require("semver"),import_execa=require("execa"),import_path=__toESM(require("path")),import_fs=__toESM(require("fs")),import_ts_dedent=__toESM(require("ts-dedent")),import_fs_extra2=require("fs-extra"),import_tiny_invariant3=__toESM(require("tiny-invariant"));var import_chalk=__toESM(require("chalk"));var import_fs_extra=__toESM(require("fs-extra"));var import_semver2=require("semver"),import_strip_json_comments=__toESM(require("strip-json-comments")),import_find_up=__toESM(require("find-up")),import_tiny_invariant2=__toESM(require("tiny-invariant"));var import_get_tarball=__toESM(require("@ndelangen/get-tarball")),import_get_npm_tarball_url=__toESM(require("get-npm-tarball-url")),tempy=__toESM(require("tempy")),import_tiny_invariant=__toESM(require("tiny-invariant"));var import_semver=require("semver");var ProjectType=(ProjectType2=>(ProjectType2.UNDETECTED="UNDETECTED",ProjectType2.UNSUPPORTED="UNSUPPORTED",ProjectType2.REACT="REACT",ProjectType2.REACT_SCRIPTS="REACT_SCRIPTS",ProjectType2.REACT_NATIVE="REACT_NATIVE",ProjectType2.REACT_PROJECT="REACT_PROJECT",ProjectType2.WEBPACK_REACT="WEBPACK_REACT",ProjectType2.NEXTJS="NEXTJS",ProjectType2.VUE3="VUE3",ProjectType2.ANGULAR="ANGULAR",ProjectType2.EMBER="EMBER",ProjectType2.WEB_COMPONENTS="WEB_COMPONENTS",ProjectType2.HTML="HTML",ProjectType2.QWIK="QWIK",ProjectType2.PREACT="PREACT",ProjectType2.SVELTE="SVELTE",ProjectType2.SVELTEKIT="SVELTEKIT",ProjectType2.SERVER="SERVER",ProjectType2.NX="NX",ProjectType2.SOLID="SOLID",ProjectType2))(ProjectType||{});var notInstallableProjectTypes=["UNDETECTED","UNSUPPORTED","NX"],installableProjectTypes=Object.values(ProjectType).filter(type=>!notInstallableProjectTypes.includes(type)).map(type=>type.toLowerCase());var logger=console;var commandLog=message=>(process.stdout.write(import_chalk.default.cyan(" \u2022 ")+message),(errorMessage,errorInfo)=>{if(errorMessage){if(process.stdout.write(`. ${import_chalk.default.red("\u2716")}
|
|
2
2
|
`),logger.error(`
|
|
3
3
|
${import_chalk.default.red(errorMessage)}`),!errorInfo)return;let newErrorInfo=errorInfo.split(`
|
|
4
4
|
`).map(line=>` ${import_chalk.default.dim(line)}`).join(`
|
|
@@ -20,4 +20,4 @@ An error occurred while installing dependencies:`),logger2.log(e.message),new Ha
|
|
|
20
20
|
Please check the logfile generated at ./storybook.log for troubleshooting and try again.`)}await removeLogFile()}async runRemoveDeps(dependencies){let args=[...dependencies];await this.executeCommand({command:"yarn",args:["remove",...this.getInstallArgs(),...args],stdio:"inherit"})}async runGetVersions(packageName,fetchAllVersions){let field=fetchAllVersions?"versions":"version",args=["--fields",field,"--json"],commandResult=await this.executeCommand({command:"yarn",args:["npm","info",packageName,...args]});try{return JSON.parse(commandResult)[field]}catch{throw new Error(`Unable to find versions of ${packageName} using yarn 2`)}}mapDependencies(input){let lines=input.split(`
|
|
21
21
|
`),acc={},existingVersions={},duplicatedDependencies={};return lines.forEach(packageName=>{if(!packageName||!packageName.includes("storybook"))return;let{name,value}=parsePackageData(packageName.replaceAll('"',""));existingVersions[name]?.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name]))}),{dependencies:acc,duplicatedDependencies,infoCommand:"yarn why",dedupeCommand:"yarn dedupe"}}parseErrorFromLogs(logs){let finalMessage="YARN2 error",match=logs.match(YARN2_ERROR_REGEX);if(match){let errorCode=match[1];errorCode&&(finalMessage=`${finalMessage} ${errorCode}`);let errorType=YARN2_ERROR_CODES[errorCode];errorType&&(finalMessage=`${finalMessage} - ${errorType}`);let errorMessage=match[2];errorMessage&&(finalMessage=`${finalMessage}: ${errorMessage}`)}return finalMessage.trim()}};var import_ts_dedent5=__toESM(require("ts-dedent")),import_find_up5=require("find-up"),import_fs5=require("fs"),import_path6=__toESM(require("path")),import_semver7=__toESM(require("semver"));var YARN1_ERROR_REGEX=/^error\s(.*)$/gm,Yarn1Proxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="yarn1"}getInstallArgs(){return this.installArgs||(this.installArgs=["--ignore-workspace-root-check"]),this.installArgs}async initPackageJson(){await this.executeCommand({command:"yarn",args:["init","-y"]})}getRunStorybookCommand(){return"yarn storybook"}getRunCommand(command){return`yarn ${command}`}runPackageCommandSync(command,args,cwd,stdio){return this.executeCommandSync({command:"yarn",args:[command,...args],cwd,stdio})}async runPackageCommand(command,args,cwd){return this.executeCommand({command:"yarn",args:[command,...args],cwd})}async getPackageJSON(packageName,basePath=this.cwd){let packageJsonPath=await(0,import_find_up5.sync)(dir=>{let possiblePath=import_path6.default.join(dir,"node_modules",packageName,"package.json");return(0,import_fs5.existsSync)(possiblePath)?possiblePath:void 0},{cwd:basePath});return packageJsonPath?JSON.parse((0,import_fs5.readFileSync)(packageJsonPath,"utf-8")):null}async getPackageVersion(packageName,basePath=this.cwd){let packageJson=await this.getPackageJSON(packageName,basePath);return packageJson?import_semver7.default.coerce(packageJson.version)?.version??null:null}async findInstallations(pattern){let commandResult=await this.executeCommand({command:"yarn",args:["list","--pattern",pattern.map(p=>`"${p}"`).join(" "),"--recursive","--json"],env:{FORCE_COLOR:"false"}});try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}getResolutions(packageJson,versions){return{resolutions:{...packageJson.resolutions,...versions}}}async runInstall(){await this.executeCommand({command:"yarn",args:["install",...this.getInstallArgs()],stdio:"inherit"})}async runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]);let{logStream,readLogFile,moveLogFile,removeLogFile}=await createLogStream();try{await this.executeCommand({command:"yarn",args:["add",...this.getInstallArgs(),...args],stdio:process.env.CI?"inherit":["ignore",logStream,logStream]})}catch{let stdout=await readLogFile(),errorMessage=this.parseErrorFromLogs(stdout);throw await moveLogFile(),new Error(import_ts_dedent5.default`${errorMessage}
|
|
22
22
|
|
|
23
|
-
Please check the logfile generated at ./storybook.log for troubleshooting and try again.`)}await removeLogFile()}async runRemoveDeps(dependencies){let args=[...dependencies];await this.executeCommand({command:"yarn",args:["remove",...this.getInstallArgs(),...args],stdio:"inherit"})}async runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=await this.executeCommand({command:"yarn",args:["info",packageName,...args]});try{let parsedOutput=JSON.parse(commandResult);if(parsedOutput.type==="inspect")return parsedOutput.data;throw new Error(`Unable to find versions of ${packageName} using yarn`)}catch{throw new Error(`Unable to find versions of ${packageName} using yarn`)}}mapDependencies(input){if(input.type==="tree"){let{trees}=input.data,acc={},existingVersions={},duplicatedDependencies={},recurse=tree=>{let{children}=tree,{name,value}=parsePackageData(tree.name);!name||!name.includes("storybook")||(existingVersions[name]?.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),children.forEach(recurse))};return trees.forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"yarn why",dedupeCommand:"yarn dedupe"}}throw new Error("Something went wrong while parsing yarn output")}parseErrorFromLogs(logs){let finalMessage="YARN1 error",match=logs.match(YARN1_ERROR_REGEX);if(match){let errorMessage=match[0]?.replace(/^error\s(.*)$/,"$1");errorMessage&&(finalMessage=`${finalMessage}: ${errorMessage}`)}return finalMessage.trim()}};var NPM_LOCKFILE="package-lock.json",PNPM_LOCKFILE="pnpm-lock.yaml",YARN_LOCKFILE="yarn.lock",JsPackageManagerFactory=class{static getPackageManager({force}={},cwd){if(force&&force in this.PROXY_MAP)return new this.PROXY_MAP[force]({cwd});let inferredPackageManager=this.inferPackageManagerFromUserAgent();if(inferredPackageManager&&inferredPackageManager in this.PROXY_MAP)return new this.PROXY_MAP[inferredPackageManager]({cwd});let yarnVersion=getYarnVersion(cwd),closestLockfilePath=(0,import_find_up6.sync)([YARN_LOCKFILE,PNPM_LOCKFILE,NPM_LOCKFILE],{cwd}),closestLockfile=closestLockfilePath&&import_node_path.default.basename(closestLockfilePath),hasNPMCommand=hasNPM(cwd),hasPNPMCommand=hasPNPM(cwd);if(yarnVersion&&(closestLockfile===YARN_LOCKFILE||!hasNPMCommand&&!hasPNPMCommand))return yarnVersion===1?new Yarn1Proxy({cwd}):new Yarn2Proxy({cwd});if(hasPNPMCommand&&closestLockfile===PNPM_LOCKFILE)return new PNPMProxy({cwd});if(hasNPMCommand)return new NPMProxy({cwd});throw new Error("Unable to find a usable package manager within NPM, PNPM, Yarn and Yarn 2")}static{this.PROXY_MAP={npm:NPMProxy,pnpm:PNPMProxy,yarn1:Yarn1Proxy,yarn2:Yarn2Proxy}}static inferPackageManagerFromUserAgent(){let userAgent=process.env.npm_config_user_agent;if(userAgent){let packageSpec=userAgent.split(" ")[0],[pkgMgrName,pkgMgrVersion]=packageSpec.split("/");if(pkgMgrName==="pnpm")return"pnpm";if(pkgMgrName==="npm")return"npm";if(pkgMgrName==="yarn")return`yarn${pkgMgrVersion?.startsWith("1.")?"1":"2"}`}}};function hasNPM(cwd){return(0,import_cross_spawn.sync)("npm",["--version"],{cwd,shell:!0}).status===0}function hasPNPM(cwd){return(0,import_cross_spawn.sync)("pnpm",["--version"],{cwd,shell:!0}).status===0}function getYarnVersion(cwd){let yarnVersionCommand=(0,import_cross_spawn.sync)("yarn",["--version"],{cwd,shell:!0});if(yarnVersionCommand.status!==0)return;let yarnVersion=yarnVersionCommand.output.toString().replace(/,/g,"").replace(/"/g,"");return/^1\.+/.test(yarnVersion)?1:2}0&&(module.exports={JsPackageManager,JsPackageManagerFactory,createLogStream,getEnvConfig,getPackageDetails,getStorybookVersion,isCorePackage,parseList,
|
|
23
|
+
Please check the logfile generated at ./storybook.log for troubleshooting and try again.`)}await removeLogFile()}async runRemoveDeps(dependencies){let args=[...dependencies];await this.executeCommand({command:"yarn",args:["remove",...this.getInstallArgs(),...args],stdio:"inherit"})}async runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=await this.executeCommand({command:"yarn",args:["info",packageName,...args]});try{let parsedOutput=JSON.parse(commandResult);if(parsedOutput.type==="inspect")return parsedOutput.data;throw new Error(`Unable to find versions of ${packageName} using yarn`)}catch{throw new Error(`Unable to find versions of ${packageName} using yarn`)}}mapDependencies(input){if(input.type==="tree"){let{trees}=input.data,acc={},existingVersions={},duplicatedDependencies={},recurse=tree=>{let{children}=tree,{name,value}=parsePackageData(tree.name);!name||!name.includes("storybook")||(existingVersions[name]?.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),children.forEach(recurse))};return trees.forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"yarn why",dedupeCommand:"yarn dedupe"}}throw new Error("Something went wrong while parsing yarn output")}parseErrorFromLogs(logs){let finalMessage="YARN1 error",match=logs.match(YARN1_ERROR_REGEX);if(match){let errorMessage=match[0]?.replace(/^error\s(.*)$/,"$1");errorMessage&&(finalMessage=`${finalMessage}: ${errorMessage}`)}return finalMessage.trim()}};var NPM_LOCKFILE="package-lock.json",PNPM_LOCKFILE="pnpm-lock.yaml",YARN_LOCKFILE="yarn.lock",JsPackageManagerFactory=class{static getPackageManager({force}={},cwd){if(force&&force in this.PROXY_MAP)return new this.PROXY_MAP[force]({cwd});let inferredPackageManager=this.inferPackageManagerFromUserAgent();if(inferredPackageManager&&inferredPackageManager in this.PROXY_MAP)return new this.PROXY_MAP[inferredPackageManager]({cwd});let yarnVersion=getYarnVersion(cwd),closestLockfilePath=(0,import_find_up6.sync)([YARN_LOCKFILE,PNPM_LOCKFILE,NPM_LOCKFILE],{cwd}),closestLockfile=closestLockfilePath&&import_node_path.default.basename(closestLockfilePath),hasNPMCommand=hasNPM(cwd),hasPNPMCommand=hasPNPM(cwd);if(yarnVersion&&(closestLockfile===YARN_LOCKFILE||!hasNPMCommand&&!hasPNPMCommand))return yarnVersion===1?new Yarn1Proxy({cwd}):new Yarn2Proxy({cwd});if(hasPNPMCommand&&closestLockfile===PNPM_LOCKFILE)return new PNPMProxy({cwd});if(hasNPMCommand)return new NPMProxy({cwd});throw new Error("Unable to find a usable package manager within NPM, PNPM, Yarn and Yarn 2")}static{this.PROXY_MAP={npm:NPMProxy,pnpm:PNPMProxy,yarn1:Yarn1Proxy,yarn2:Yarn2Proxy}}static inferPackageManagerFromUserAgent(){let userAgent=process.env.npm_config_user_agent;if(userAgent){let packageSpec=userAgent.split(" ")[0],[pkgMgrName,pkgMgrVersion]=packageSpec.split("/");if(pkgMgrName==="pnpm")return"pnpm";if(pkgMgrName==="npm")return"npm";if(pkgMgrName==="yarn")return`yarn${pkgMgrVersion?.startsWith("1.")?"1":"2"}`}}};function hasNPM(cwd){return(0,import_cross_spawn.sync)("npm",["--version"],{cwd,shell:!0}).status===0}function hasPNPM(cwd){return(0,import_cross_spawn.sync)("pnpm",["--version"],{cwd,shell:!0}).status===0}function getYarnVersion(cwd){let yarnVersionCommand=(0,import_cross_spawn.sync)("yarn",["--version"],{cwd,shell:!0});if(yarnVersionCommand.status!==0)return;let yarnVersion=yarnVersionCommand.output.toString().replace(/,/g,"").replace(/"/g,"");return/^1\.+/.test(yarnVersion)?1:2}0&&(module.exports={JsPackageManager,JsPackageManagerFactory,createLogStream,getEnvConfig,getPackageDetails,getStorybookVersion,isCorePackage,parseList,versions});
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { JsPackageManager, JsPackageManagerFactory, createLogStream, getEnvConfig, getPackageDetails, getStorybookVersion, isCorePackage, parseList,
|
|
1
|
+
export { JsPackageManager, JsPackageManagerFactory, createLogStream, getEnvConfig, getPackageDetails, getStorybookVersion, isCorePackage, parseList, versions_default as versions } from './chunk-W7OGSSFY.mjs';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@storybook/cli",
|
|
3
|
-
"version": "8.0.0-alpha.
|
|
3
|
+
"version": "8.0.0-alpha.7",
|
|
4
4
|
"description": "Storybook's CLI - install, dev, build, upgrade, and more",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -60,14 +60,14 @@
|
|
|
60
60
|
"@babel/preset-env": "^7.23.2",
|
|
61
61
|
"@babel/types": "^7.23.0",
|
|
62
62
|
"@ndelangen/get-tarball": "^3.0.7",
|
|
63
|
-
"@storybook/codemod": "8.0.0-alpha.
|
|
64
|
-
"@storybook/core-common": "8.0.0-alpha.
|
|
65
|
-
"@storybook/core-events": "8.0.0-alpha.
|
|
66
|
-
"@storybook/core-server": "8.0.0-alpha.
|
|
67
|
-
"@storybook/csf-tools": "8.0.0-alpha.
|
|
68
|
-
"@storybook/node-logger": "8.0.0-alpha.
|
|
69
|
-
"@storybook/telemetry": "8.0.0-alpha.
|
|
70
|
-
"@storybook/types": "8.0.0-alpha.
|
|
63
|
+
"@storybook/codemod": "8.0.0-alpha.7",
|
|
64
|
+
"@storybook/core-common": "8.0.0-alpha.7",
|
|
65
|
+
"@storybook/core-events": "8.0.0-alpha.7",
|
|
66
|
+
"@storybook/core-server": "8.0.0-alpha.7",
|
|
67
|
+
"@storybook/csf-tools": "8.0.0-alpha.7",
|
|
68
|
+
"@storybook/node-logger": "8.0.0-alpha.7",
|
|
69
|
+
"@storybook/telemetry": "8.0.0-alpha.7",
|
|
70
|
+
"@storybook/types": "8.0.0-alpha.7",
|
|
71
71
|
"@types/semver": "^7.3.4",
|
|
72
72
|
"@yarnpkg/fslib": "2.10.3",
|
|
73
73
|
"@yarnpkg/libzip": "2.3.0",
|