'use strict'; module.exports = function generateBabelPreset({supportReact, extraBabelPresets, includeNodeModules, exclude, include} = {}) { let excludeList = []; if (!includeNodeModules) { excludeList.push(/node_modules/) } if (exclude != null) { excludeList = excludeList.concat(exclude); } let resolvedExtensions = [".js"]; let presets = ["es2015"]; let testRegex; if (supportReact) { resolvedExtensions.push(".jsx"); presets.push("react"); testRegex = /\.jsx?$/; } else { testRegex = /\.js$/; } if (extraBabelPresets != null) { presets = presets.concat(extraBabelPresets); } return { module: { rules: [{ test: testRegex, exclude: excludeList, include: include, resolve: { extensions: resolvedExtensions }, use: [{ loader: require.resolve("babel-loader"), query: { presets: presets.map(item => require.resolve(`babel-preset-${item}`)) } }] }] } } };