@web/dev-server-storybook
Version:
Dev server plugin for using storybook with es modules.
28 lines (22 loc) • 926 B
text/typescript
import globby from 'globby';
import path from 'path';
import { createBrowserImport, createError } from '../utils.js';
export async function findStories(
rootDir: string,
mainJsPath: string,
// eslint-disable-next-line @typescript-eslint/ban-types
stories: string[] | Function,
) {
const mainJsDir = path.dirname(mainJsPath);
const storiesPatterns: string[] =
typeof stories === 'function' ? await Promise.resolve(stories()) : stories;
const storyPaths = await globby(storiesPatterns, { cwd: mainJsDir, absolute: false });
const storyFilePaths = storyPaths.map(p => path.join(mainJsDir, p.split('/').join(path.sep)));
if (storyFilePaths.length === 0) {
throw createError(`Could not find any stories with pattern ${storiesPatterns}`);
}
const storyImports = storyFilePaths.map(storyFilePath =>
createBrowserImport(rootDir, storyFilePath),
);
return { storyFilePaths, storyImports };
}