@web/dev-server-storybook
Version:
Dev server plugin for using storybook with es modules.
43 lines • 1.99 kB
JavaScript
import { readStorybookConfig } from '../shared/config/readStorybookConfig.js';
import { validatePluginConfig } from '../shared/config/validatePluginConfig.js';
import { createRollupConfig } from './rollup/createRollupConfig.js';
import { buildAndWrite } from './rollup/buildAndWrite.js';
import { createManagerHtml } from '../shared/html/createManagerHtml.js';
import { createPreviewHtml } from '../shared/html/createPreviewHtml.js';
import { findStories } from '../shared/stories/findStories.js';
async function buildPreview(params) {
var _a;
const { type, storybookConfig, pluginConfig, outputDir, rootDir } = params;
const { storyImports, storyFilePaths } = await findStories(rootDir, storybookConfig.mainJsPath, storybookConfig.mainJs.stories);
const previewHtml = createPreviewHtml(pluginConfig, storybookConfig, rootDir, storyImports);
let config = createRollupConfig({
type,
outputDir,
indexFilename: 'iframe.html',
indexHtmlString: previewHtml,
storyFilePaths,
});
if (storybookConfig.mainJs.rollupConfig) {
config = (_a = (await storybookConfig.mainJs.rollupConfig(config))) !== null && _a !== void 0 ? _a : config;
}
await buildAndWrite(config);
}
async function buildManager(params) {
const managerHtml = createManagerHtml(params.storybookConfig, params.rootDir);
const config = createRollupConfig({
type: params.type,
outputDir: params.outputDir,
indexFilename: 'index.html',
indexHtmlString: managerHtml,
});
await buildAndWrite(config);
}
export async function build(params) {
const { type, outputDir } = params;
const rootDir = process.cwd();
validatePluginConfig(params);
const storybookConfig = await readStorybookConfig(params);
await buildManager({ type, outputDir, storybookConfig, rootDir });
await buildPreview({ type, storybookConfig, pluginConfig: params, outputDir, rootDir });
}
//# sourceMappingURL=build.js.map