52 lines
1.2 KiB
JavaScript
52 lines
1.2 KiB
JavaScript
const r = require(`./resolver`)
|
|
|
|
function preset(context, options = {}) {
|
|
const { browser = false, debug = false } = options
|
|
const { NODE_ENV, BABEL_ENV } = process.env
|
|
|
|
const PRODUCTION = (BABEL_ENV || NODE_ENV) === `production`
|
|
|
|
const browserConfig = {
|
|
useBuiltIns: false,
|
|
targets: {
|
|
browsers: PRODUCTION
|
|
? [`last 4 versions`, `safari >= 7`, `ie >= 9`]
|
|
: [`last 2 versions`, `not ie <= 11`, `not android 4.4.3`],
|
|
},
|
|
}
|
|
|
|
const nodeConfig = {
|
|
targets: {
|
|
node: PRODUCTION ? 6.0 : `current`,
|
|
},
|
|
}
|
|
|
|
return {
|
|
presets: [
|
|
[
|
|
r(`@babel/preset-env`),
|
|
Object.assign(
|
|
{
|
|
loose: true,
|
|
debug: !!debug,
|
|
useBuiltIns: `entry`,
|
|
shippedProposals: true,
|
|
modules: `commonjs`,
|
|
},
|
|
browser ? browserConfig : nodeConfig
|
|
),
|
|
],
|
|
[r(`@babel/preset-react`), { development: !PRODUCTION }],
|
|
r(`@babel/preset-flow`),
|
|
],
|
|
plugins: [
|
|
r(`@babel/plugin-proposal-class-properties`),
|
|
r(`@babel/plugin-proposal-optional-chaining`),
|
|
r(`@babel/plugin-transform-runtime`),
|
|
r(`@babel/plugin-syntax-dynamic-import`),
|
|
],
|
|
}
|
|
}
|
|
|
|
module.exports = preset
|