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);
};