You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
952 B
JavaScript

'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}`))
}
}]
}]
}
}
};