UNPKG

1.38 kBJavaScriptView Raw
1'use strict'
2const { pkg, browserslist } = require('./../utils')
3
4module.exports = function (opts = {}) {
5 const env = process.env.BABEL_ENV || process.env.NODE_ENV
6 const isEnvDevelopment = env === 'development'
7 const isEnvProduction = env === 'production'
8 const isEnvTest = env === 'test'
9 const isTSEnable = process.env.AEGIR_TS === 'true'
10 const targets = { browsers: pkg.browserslist || browserslist }
11 if (!isEnvDevelopment && !isEnvProduction && !isEnvTest) {
12 throw new Error(
13 'Using `babel-preset-env` requires that you specify `NODE_ENV` or ' +
14 '`BABEL_ENV` environment variables. Valid values are "development", ' +
15 '"test", and "production". Instead, received: ' +
16 JSON.stringify(env) +
17 '.'
18 )
19 }
20
21 return {
22 presets: [
23 [
24 require('@babel/preset-env').default,
25 {
26 corejs: 3,
27 useBuiltIns: 'entry',
28 modules: 'commonjs',
29 bugfixes: true,
30 targets
31 }
32 ],
33 isTSEnable && [
34 '@babel/preset-typescript',
35 {
36 allowNamespaces: true
37 }
38 ]
39 ].filter(Boolean),
40 plugins: [
41 '@babel/plugin-proposal-class-properties',
42 [
43 require('@babel/plugin-transform-runtime').default,
44 {
45 helpers: false,
46 regenerator: true
47 }
48 ]
49 ]
50 }
51}