storybook-react-rsbuild
Version:
Storybook for React and Rsbuild: Develop React components in isolation with Hot Reloading.
89 lines (81 loc) • 2.93 kB
JavaScript
import CJS_COMPAT_NODE_URL_bce9f5a39a886437 from 'node:url';
import CJS_COMPAT_NODE_PATH_bce9f5a39a886437 from 'node:path';
import CJS_COMPAT_NODE_MODULE_bce9f5a39a886437 from "node:module";
var __filename = CJS_COMPAT_NODE_URL_bce9f5a39a886437.fileURLToPath(import.meta.url);
var __dirname = CJS_COMPAT_NODE_PATH_bce9f5a39a886437.dirname(__filename);
var require = CJS_COMPAT_NODE_MODULE_bce9f5a39a886437.createRequire(import.meta.url);
// ------------------------------------------------------------
// end of CJS compatibility banner, injected by Storybook's esbuild configuration
// ------------------------------------------------------------
import {
__require
} from "./_node-chunks/chunk-HLWUFMVK.js";
// src/preset.ts
import { fileURLToPath } from "node:url";
// src/react-docs.ts
import { mergeRsbuildConfig } from "@rsbuild/core";
// src/requirer.ts
function requirer(resolver, path) {
return resolver(path);
}
// src/react-docs.ts
var rsbuildFinalDocs = async (config, options) => {
let typescriptOptions = await options.presets.apply("typescript", {}), debug = options.loglevel === "debug", { reactDocgen, reactDocgenTypescriptOptions } = typescriptOptions || {};
if (typeof reactDocgen != "string")
return config;
if (reactDocgen !== "react-docgen-typescript")
return mergeRsbuildConfig(config, {
tools: {
rspack: {
module: {
rules: [
{
test: /\.(cjs|mjs|tsx?|jsx?)$/,
enforce: "pre",
loader: requirer(
__require.resolve,
"storybook-react-rsbuild/loaders/react-docgen-loader"
),
options: {
debug
},
exclude: /(\.(stories|story)\.(js|jsx|ts|tsx))|(node_modules)/
}
]
}
}
}
});
let typescriptPresent;
try {
__require.resolve("typescript"), typescriptPresent = !0;
} catch {
typescriptPresent = !1;
}
let reactDocGenTsPlugin = await import("./_node-chunks/react-docgen-typescript-2SOKSJO6.js");
return mergeRsbuildConfig(config, {
plugins: [
await reactDocGenTsPlugin.default({
...reactDocgenTypescriptOptions,
// We *need* this set so that RDT returns default values in the same format as react-docgen
savePropValueAsString: !0
})
]
});
};
// src/preset.ts
var rsbuildFinal = async (config, options) => rsbuildFinalDocs(config, options), core = async (config, options) => {
let framework = await options.presets.apply("framework");
return {
...config,
builder: {
name: fileURLToPath(import.meta.resolve("storybook-builder-rsbuild")),
options: typeof framework == "string" ? {} : framework.options.builder || {}
},
renderer: fileURLToPath(import.meta.resolve("@storybook/react/preset"))
};
};
export {
core,
rsbuildFinal
};