UNPKG

@storybook/preset-create-react-app

Version:
2 lines (1 loc) • 8.44 kB
"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 index_exports={};__export(index_exports,{core:()=>exportedCore,webpack:()=>exportedWebpack});module.exports=__toCommonJS(index_exports);var import_node_path4=require("path"),import_node_logger2=require("storybook/internal/node-logger"),import_pnp_webpack_plugin=__toESM(require("pnp-webpack-plugin"));var import_node_logger=require("storybook/internal/node-logger"),incompatiblePresets=["@storybook/preset-scss","@storybook/preset-typescript"],checkPresets=options=>{let{presetsList}=options;presetsList?.forEach(preset=>{let presetName=typeof preset=="string"?preset:preset.name;incompatiblePresets.includes(presetName)&&import_node_logger.logger.warn(`\`${presetName}\` may not be compatible with \`@storybook/preset-create-react-app\``)})};var import_node_fs=require("fs"),import_node_path=require("path"),JSCONFIG="jsconfig.json",TSCONFIG="tsconfig.json",getModulePath=appDirectory=>{let configName="";(0,import_node_fs.existsSync)((0,import_node_path.join)(appDirectory,TSCONFIG))?configName=TSCONFIG:(0,import_node_fs.existsSync)((0,import_node_path.join)(appDirectory,JSCONFIG))&&(configName=JSCONFIG);try{let{baseUrl}=require((0,import_node_path.join)(appDirectory,configName)).compilerOptions;return baseUrl?[baseUrl]:[]}catch{return[]}};var import_node_fs2=require("fs"),import_node_path2=require("path"),getReactScriptsPath=()=>{let cwd=process.cwd(),scriptsBinPath=(0,import_node_path2.join)(cwd,"/node_modules/.bin/react-scripts");if(process.platform==="win32")try{let packagePathMatch=(0,import_node_fs2.readFileSync)(scriptsBinPath,"utf8").match(/"\$basedir[\\/](\S+?)[\\/]bin[\\/]react-scripts\.js"/i);if(packagePathMatch&&packagePathMatch.length>1)return(0,import_node_path2.join)(cwd,"/node_modules/.bin/",packagePathMatch[1])}catch{}else try{let scriptsBinPathStat=(0,import_node_fs2.lstatSync)(scriptsBinPath);if(scriptsBinPathStat.isSymbolicLink()===!0){let resolvedBinPath=(0,import_node_fs2.realpathSync)(scriptsBinPath);return(0,import_node_path2.join)(resolvedBinPath,"..","..")}if(scriptsBinPathStat.isFile()===!0)return(0,import_node_path2.join)(cwd,"/node_modules/react-scripts")}catch{}try{return(0,import_node_path2.dirname)(require.resolve("react-scripts/package.json"))}catch{}return""};var import_react_refresh_webpack_plugin=__toESM(require("@pmmmwh/react-refresh-webpack-plugin")),mergePlugins=(...args)=>args?.reduce((plugins,plugin)=>{if(plugins?.some(includedPlugin=>includedPlugin?.constructor.name===plugin?.constructor.name)||plugin?.constructor.name==="WebpackManifestPlugin")return plugins;let updatedPlugin=plugin;return plugin?.constructor.name==="ReactRefreshPlugin"&&(updatedPlugin=new import_react_refresh_webpack_plugin.default({overlay:{sockIntegration:"whm"}})),[...plugins??[],updatedPlugin]},[]);var import_node_path3=require("path"),import_semver=__toESM(require("semver")),isRegExp=value=>value instanceof RegExp,isString=value=>typeof value=="string",testMatch=(rule,string)=>rule.test?Array.isArray(rule.test)?rule.test.some(test=>isRegExp(test)&&test.test(string)):isRegExp(rule.test)&&rule.test.test(string):!1,processCraConfig=async(craWebpackConfig,options)=>{let configDir=(0,import_node_path3.resolve)(options.configDir),storybookVersion=import_semver.default.coerce(options.packageJson?.version)||"",isStorybook530=import_semver.default.gte(storybookVersion,"5.3.0"),babelOptions=await options.presets.apply("babel");return craWebpackConfig?.module?.rules?craWebpackConfig.module.rules.reduce((rules,rule)=>{let{oneOf,include}=rule;if(testMatch(rule,".jsx")){let newRule={...rule,include:[include,configDir].filter(Boolean)};return[...rules,newRule]}return oneOf?[...rules,{oneOf:oneOf.map(oneOfRule=>{if(oneOfRule.type==="asset/resource"){if(isStorybook530){let excludes=["ejs","md","mdx","cjs",...options.craOverrides?.fileLoaderExcludes||[]],excludeRegex=new RegExp(`\\.(${excludes.join("|")})$`);return{...oneOfRule,exclude:[...oneOfRule.exclude,excludeRegex]}}return{}}if(testMatch(oneOfRule,".css"))return{...oneOfRule,include:isStorybook530?void 0:[configDir],exclude:[oneOfRule.exclude,/@storybook/]};let isBabelLoader=isString(oneOfRule.loader)&&/[/\\]babel-loader[/\\]/.test(oneOfRule.loader);if(isBabelLoader&&isRegExp(oneOfRule.test)&&oneOfRule.test.test(".jsx")){let{include:_include,options:ruleOptions}=oneOfRule,{plugins:rulePlugins,presets:rulePresets,overrides:ruleOverrides}=typeof ruleOptions=="object"?ruleOptions:{},{extends:_extends,plugins,presets,overrides}=babelOptions;return{...oneOfRule,include:[_include,configDir].filter(Boolean),options:{...ruleOptions,extends:_extends,plugins:[...plugins??[],...rulePlugins??[]],presets:[...presets??[],...rulePresets??[]],overrides:[...overrides??[],...ruleOverrides??[]]}}}return isBabelLoader&&isRegExp(oneOfRule.test)&&oneOfRule.test.test(".js")?{...oneOfRule,include:[configDir]}:oneOfRule})}]:[...rules,rule]},[]):[]};var CWD=process.cwd(),REACT_SCRIPTS_PATH=getReactScriptsPath(),OPTION_SCRIPTS_PACKAGE="scriptsPackageName";process.env.PUBLIC_URL||(process.env.PUBLIC_URL=".");var resolveLoader={modules:["node_modules",(0,import_node_path4.join)(REACT_SCRIPTS_PATH,"node_modules")],plugins:[import_pnp_webpack_plugin.default.moduleLoader(module)]},core=existing=>({...existing,disableWebpackDefaults:!0}),webpack=async(webpackConfig={},options)=>{let scriptsPath=REACT_SCRIPTS_PATH;checkPresets(options);let scriptsPackageName=options[OPTION_SCRIPTS_PACKAGE];if(typeof scriptsPackageName=="string")try{scriptsPath=(0,import_node_path4.dirname)(require.resolve(`${scriptsPackageName}/package.json`,{paths:[options.configDir]}))}catch{import_node_logger2.logger.warn(`A \`${OPTION_SCRIPTS_PACKAGE}\` was provided, but couldn't be resolved.`)}if(!scriptsPath)return import_node_logger2.logger.error("Failed to resolve a `react-scripts` package."),webpackConfig;import_node_logger2.logger.info(`=> Loading Webpack configuration from \`${(0,import_node_path4.relative)(CWD,scriptsPath)}\``),import_node_logger2.logger.info("=> Removing existing JavaScript and TypeScript rules.");let filteredRules=webpackConfig.module?.rules?.filter(rule=>{if(typeof rule=="string")return!1;let{test}=rule;return!(test instanceof RegExp&&(test?.test(".js")||test?.test(".ts")))}),craWebpackConfigPath=(0,import_node_path4.join)(scriptsPath,"config","webpack.config"),craWebpackConfig=require(craWebpackConfigPath)(webpackConfig.mode);import_node_logger2.logger.info("=> Modifying Create React App rules.");let craRules=await processCraConfig(craWebpackConfig,options),isProd=webpackConfig.mode!=="development",builder=(await options.presets.apply("core"))?.builder,builderOptions=typeof builder=="string"?{}:builder?.options,cacheConfig=builderOptions?.fsCache?{cache:{type:"filesystem"}}:{},lazyCompilationConfig=builderOptions?.lazyCompilation&&!isProd?{experiments:{lazyCompilation:{entries:!1}}}:{};return{...webpackConfig,...cacheConfig,...lazyCompilationConfig,module:{...webpackConfig.module,rules:[...filteredRules||[],...craRules]},plugins:mergePlugins(...webpackConfig.plugins??[],...craWebpackConfig.plugins??[]),resolve:{...webpackConfig.resolve,extensions:craWebpackConfig.resolve?.extensions,modules:[...webpackConfig.resolve&&webpackConfig.resolve.modules||[],(0,import_node_path4.join)(REACT_SCRIPTS_PATH,"node_modules"),...getModulePath(CWD)],plugins:[import_pnp_webpack_plugin.default],conditionNames:[...webpackConfig.resolve?.conditionNames??[],"storybook","stories","test","..."]},resolveLoader}},exportedCore=core,exportedWebpack=webpack;0&&(module.exports={core,webpack});