mirror of
https://github.com/storybookjs/storybook.git
synced 2025-04-08 09:31:47 +08:00
39 lines
1.0 KiB
JavaScript
39 lines
1.0 KiB
JavaScript
import path from 'path';
|
|
import loadPresets from './presets';
|
|
import serverRequire from './serverRequire';
|
|
|
|
const noopWrapper = config => config;
|
|
|
|
function customPreset({ configDir }) {
|
|
return serverRequire(path.resolve(configDir, 'presets')) || [];
|
|
}
|
|
|
|
function getWebpackConfig(options, presets) {
|
|
const { configDir, wrapDefaultBabelConfig = noopWrapper } = options;
|
|
|
|
const babelOptions = presets.extendBabel({}, { configDir, wrapDefaultBabelConfig });
|
|
|
|
const entries = {
|
|
iframe: presets.extendPreview([], options),
|
|
manager: presets.extendManager([], options),
|
|
};
|
|
|
|
return presets.extendWebpack({}, { ...options, babelOptions, entries });
|
|
}
|
|
|
|
export default options => {
|
|
const { corePresets, frameworkPresets, ...restOptions } = options;
|
|
|
|
const presetsConfig = [
|
|
...corePresets,
|
|
require.resolve('./core-preset-babel-cache.js'),
|
|
...frameworkPresets,
|
|
...customPreset(options),
|
|
require.resolve('./core-preset-webpack-custom.js'),
|
|
];
|
|
|
|
const presets = loadPresets(presetsConfig);
|
|
|
|
return getWebpackConfig(restOptions, presets);
|
|
};
|