配置babel, 需要进行require操作
babelConfig.js(本地) : 需要特殊处理,api && api.cache(true);, 进行 require 操作
function resolve(moduleName) {
return require.resolve(moduleName);
}
module.exports = function(modules) {
const plugins = [
[
resolve('@babel/plugin-transform-typescript'),
{
isTSX: true,
},
],
resolve('babel-plugin-inline-import-data-uri'),
resolve('@babel/plugin-transform-member-expression-literals'),
resolve('@babel/plugin-transform-object-assign'),
resolve('@babel/plugin-transform-property-literals'),
[
resolve('@babel/plugin-transform-runtime'),
{
helpers: false,
},
],
resolve('@babel/plugin-transform-spread'),
resolve('@babel/plugin-transform-template-literals'),
resolve('@babel/plugin-proposal-export-default-from'),
resolve('@babel/plugin-proposal-export-namespace-from'),
resolve('@babel/plugin-proposal-object-rest-spread'),
[
resolve('@babel/plugin-proposal-decorators'),
{
legacy: true,
},
],
resolve('@babel/plugin-proposal-class-properties'),
];
return {
presets: [
resolve('@babel/preset-react'),
[
resolve('@babel/preset-env'),
{
modules,
targets: {
browsers: [
'last 2 versions',
'Firefox ESR',
'> 1%',
'ie >= 9',
'iOS >= 8',
'Android >= 4',
],
},
},
],
],
plugins,
};
};
// webpack
const babelConfig = require('babelConfig.js')();
{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: resolve('babel-loader'),
options: babelConfig,
}