Webpack 4-based builder for Storybook that provides framework-agnostic build engine for preview iframe compilation and bundling.
91
Webpack configuration generation and customization system that integrates with Storybook's preset system, supporting framework-specific configurations, custom webpack configurations, and comprehensive asset handling.
Generates complete webpack configuration from Storybook options and presets.
/**
* Generates webpack configuration from Storybook options and presets
* @param options - Storybook configuration options with presets and framework settings
* @returns Promise resolving to webpack Configuration object
*/
function getConfig(options: Options): Promise<Configuration>;
interface Options {
/** Babel configuration options */
babelOptions: any;
/** TypeScript configuration options */
typescriptOptions: any;
/** Preset manager for applying configuration transformations */
presets: PresetApi;
/** Target framework (react, vue, angular, etc.) */
framework: string;
/** Build configuration type */
configType: 'DEVELOPMENT' | 'PRODUCTION';
/** Output directory for built files */
outputDir?: string;
/** Storybook configuration directory */
configDir: string;
/** Package.json contents */
packageJson: any;
/** Enable quiet mode for reduced logging */
quiet?: boolean;
/** Preview URL for iframe */
previewUrl?: string;
/** Modern build flag */
modern?: boolean;
/** Feature flags */
features?: Record<string, boolean>;
/** Server channel URL */
serverChannelUrl?: string;
/** Custom webpack configuration function */
webpackConfig?: (config: Configuration) => Configuration;
/** Debug webpack flag for detailed output */
debugWebpack?: boolean;
[key: string]: any;
}Usage Examples:
import { getConfig } from "@storybook/builder-webpack4";
import type { Options } from "@storybook/core-common";
const storybookOptions: Options = {
configType: 'DEVELOPMENT',
outputDir: './storybook-static',
configDir: '.storybook',
framework: 'react',
babelOptions: {
presets: ['@babel/preset-env'],
},
typescriptOptions: {
transpileOnly: true,
},
presets: presetManager,
packageJson: require('./package.json'),
};
const webpackConfig = await getConfig(storybookOptions);
console.log('Generated webpack config:', webpackConfig);The configuration system provides comprehensive asset handling:
Framework-specific configurations are supported through:
Different configurations for development and production modes:
Multiple ways to customize webpack configuration:
webpack presetConfiguration generation includes error handling for:
Install with Tessl CLI
npx tessl i tessl/npm-storybook--builder-webpack4evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10