UNPKG

storybook-addon-modernjs

Version:

Storybook addon for loading configuration of Modern.js

92 lines (88 loc) 3.75 kB
import CJS_COMPAT_NODE_URL_c6040df813f9abe6 from 'node:url'; import CJS_COMPAT_NODE_PATH_c6040df813f9abe6 from 'node:path'; import CJS_COMPAT_NODE_MODULE_c6040df813f9abe6 from "node:module"; var __filename = CJS_COMPAT_NODE_URL_c6040df813f9abe6.fileURLToPath(import.meta.url); var __dirname = CJS_COMPAT_NODE_PATH_c6040df813f9abe6.dirname(__filename); var require = CJS_COMPAT_NODE_MODULE_c6040df813f9abe6.createRequire(import.meta.url); // ------------------------------------------------------------ // end of CJS compatibility banner, injected by Storybook's esbuild configuration // ------------------------------------------------------------ var __require = /* @__PURE__ */ ((x) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(x, { get: (a, b) => (typeof require < "u" ? require : a)[b] }) : x)(function(x) { if (typeof require < "u") return require.apply(this, arguments); throw Error('Dynamic require of "' + x + '" is not supported'); }); // src/preset.ts import { builderPluginAdapterBasic, builderPluginAdapterHooks, parseRspackConfig as parseToRsbuildConfig } from "@modern-js/app-tools/builder"; import { mergeRsbuildConfig } from "@rsbuild/core"; import findUp from "find-up"; import { logger } from "rslog"; var MODERN_META_NAME = "modern-js", MODERN_CONFIG_FILE = "modern.config.ts", loadCreateStorybookOptions = async () => { try { return (await import("@modern-js/plugin/cli")).createStorybookOptions; } catch { try { return (await import("@modern-js/plugin-v2/cli")).createStorybookOptions; } catch { throw new Error( "Cannot resolve Modern.js Storybook plugin entry. Install @modern-js/app-tools@^3 with @modern-js/plugin, or @modern-js/app-tools@^2 with @modern-js/plugin-v2, then retry." ); } } }, PKG_NAME = "@rsbuild/core", getVersion = async (cwd) => { let pkgPath = await findUp("package.json", { cwd }), pkg = __require(pkgPath); return pkg.name === PKG_NAME ? pkg.version : pkg.dependencies[PKG_NAME] || pkg.devDependencies[PKG_NAME]; }, checkDependency = async () => { let projectVersion = await getVersion(process.cwd()), recommandVersion = await getVersion( __require.resolve("@modern-js/app-tools") ), installedVersion = await getVersion(__require.resolve("@rsbuild/core")); if (!projectVersion) { logger.error( `Missing required dependency @rsbuild/core, please install @rsbuild/core@${recommandVersion}` ); return; } recommandVersion !== installedVersion && logger.warn( `@rsbuild/core version mismatch: expected ${recommandVersion}, got ${installedVersion}. Please install @rsbuild/core@${recommandVersion}` ); }, rsbuildFinal = async (config, options) => { await checkDependency(); let cwd = process.cwd(), createStorybookOptions = await loadCreateStorybookOptions(), { config: resolveConfig, getAppContext } = await createStorybookOptions({ cwd, configFile: options.configPath || MODERN_CONFIG_FILE, metaName: MODERN_META_NAME }), nonStandardConfig = { ...resolveConfig, plugins: [resolveConfig.builderPlugins] }, { rsbuildConfig, rsbuildPlugins } = await parseToRsbuildConfig( nonStandardConfig, { cwd } ), adapterParams = { appContext: getAppContext(), normalizedConfig: resolveConfig }; if (rsbuildConfig.plugins = [ ...rsbuildPlugins, ...rsbuildConfig.plugins || [], builderPluginAdapterBasic(adapterParams), builderPluginAdapterHooks(adapterParams) ], rsbuildConfig.output) for (let key of [ "distPath", "assetPrefix", "cleanDistPath", "filename" ]) delete rsbuildConfig.output[key]; return mergeRsbuildConfig(config, rsbuildConfig); }; export { rsbuildFinal };