about summary refs log tree commit diff
path: root/babel.config.js
diff options
context:
space:
mode:
authorYamagishi Kazutoshi <ykzts@desire.sh>2018-09-15 00:59:48 +0900
committerEugen Rochko <eugen@zeonfederated.com>2018-09-14 17:59:48 +0200
commit0ddbccf7e6303f3b524628e210bdba5654d5c421 (patch)
tree15f8257614fdb9c7a6bc3b74bdbd3688525f493c /babel.config.js
parent64a5561b5afe0cd125498a245f8b27ea3d4d133c (diff)
Upgrade Babel to version 7.0.0 (#5925)
Diffstat (limited to 'babel.config.js')
-rw-r--r--babel.config.js65
1 files changed, 65 insertions, 0 deletions
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 000000000..a506ad8ce
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,65 @@
+module.exports = (api) => {
+  const env = api.env();
+
+  const envOptions = {
+    debug: false,
+    loose: true,
+    modules: false,
+  };
+
+  const config = {
+    presets: [
+      '@babel/react',
+      ['@babel/env', envOptions],
+    ],
+    plugins: [
+      '@babel/syntax-dynamic-import',
+      ['@babel/proposal-object-rest-spread', { useBuiltIns: true }],
+      ['@babel/proposal-decorators', { legacy: true }],
+      '@babel/proposal-class-properties',
+      ['react-intl', { messagesDir: './build/messages' }],
+      'preval',
+    ],
+  };
+
+  switch (env) {
+  case 'production':
+    envOptions.debug = false;
+    config.plugins.push(...[
+      'lodash',
+      [
+        'transform-react-remove-prop-types',
+        {
+          mode: 'remove',
+          removeImport: true,
+          additionalLibraries: [
+            'react-immutable-proptypes',
+          ],
+        },
+      ],
+      '@babel/transform-react-inline-elements',
+      [
+        '@babel/transform-runtime',
+        {
+          helpers: true,
+          regenerator: false,
+          useESModules: true,
+        },
+      ],
+    ]);
+    break;
+  case 'development':
+    envOptions.debug = true;
+    config.plugins.push(...[
+      '@babel/transform-react-jsx-source',
+      '@babel/transform-react-jsx-self',
+    ]);
+    break;
+  case 'test':
+    envOptions.modules = 'commonjs';
+    break;
+  }
+
+  return config;
+};
+