Start using @babel/preset-env
Dan Abramov committed
Apr 26, 2019 at 19:29 UTC
e5ed26687389669d5e21a5f4f50ec31ca6c3cfa2
5 files changed
+48
-17
.babelrc
deleted
-7
@@ -1,7 +0,0 @@
1
-{
2
- "plugins": [
3
- ["@babel/plugin-transform-flow-strip-types"],
4
- ["@babel/plugin-proposal-class-properties", { "loose": false }]
5
- ],
6
- "presets": ["@babel/preset-env", "@babel/preset-react", "@babel/preset-flow"]
7
-}
babel.config.js
new
+39
@@ -0,0 +1,39 @@
1
+const chromeManifest = require('./shells/browser/chrome/manifest.json');
2
+const firefoxManifest = require('./shells/browser/firefox/manifest.json');
3
+
4
+const minChromeVersion = parseInt(chromeManifest.minimum_chrome_version, 10);
5
+const minFirefoxVersion = parseInt(
6
+ firefoxManifest.applications.gecko.strict_min_version,
7
+ 10
8
+);
9
+validateVersion(minChromeVersion);
10
+validateVersion(minFirefoxVersion);
11
+
12
+function validateVersion(version) {
13
+ if (version > 0 && version < 200) {
14
+ return;
15
+ }
16
+ throw new Error('Suspicious browser version in manifest: ' + version);
17
+}
18
+
19
+module.exports = api => {
20
+ const isTest = api.env('test');
21
+ const targets = {};
22
+ if (isTest) {
23
+ targets.node = 'current';
24
+ } else {
25
+ targets.chrome = minChromeVersion.toString();
26
+ targets.firefox = minFirefoxVersion.toString();
27
+ }
28
+ return {
29
+ plugins: [
30
+ ['@babel/plugin-transform-flow-strip-types'],
31
+ ['@babel/plugin-proposal-class-properties', { loose: false }],
32
+ ],
33
+ presets: [
34
+ ['@babel/preset-env', { targets }],
35
+ '@babel/preset-react',
36
+ '@babel/preset-flow',
37
+ ],
38
+ };
39
+};
shells/browser/shared/webpack.backend.js
+3
-4
@@ -1,4 +1,3 @@
1
-const { readFileSync } = require('fs');
1
const { resolve } = require('path');
2
const { DefinePlugin } = require('webpack');
3
const { getGitHubURL, getVersionString } = require('../../utils');
@@ -41,9 +40,9 @@ module.exports = {
40
{
41
test: /\.js$/,
42
loader: 'babel-loader',
44
- options: JSON.parse(
45
- readFileSync(resolve(__dirname, '../../../.babelrc'))
46
- ),
43
+ options: {
44
+ configFile: resolve(__dirname, '../../../babel.config.js'),
45
+ },
46
},
47
],
48
},
shells/browser/shared/webpack.config.js
+3
-4
@@ -1,4 +1,3 @@
1
-const { readFileSync } = require('fs');
1
const { resolve } = require('path');
2
const { DefinePlugin } = require('webpack');
3
const { getGitHubURL, getVersionString } = require('../../utils');
@@ -47,9 +46,9 @@ module.exports = {
46
{
47
test: /\.js$/,
48
loader: 'babel-loader',
50
- options: JSON.parse(
51
- readFileSync(resolve(__dirname, '../../../.babelrc'))
52
- ),
49
+ options: {
50
+ configFile: resolve(__dirname, '../../../babel.config.js'),
51
+ },
52
},
53
{
54
test: /\.css$/,
shells/dev/webpack.config.js
+3
-2
@@ -1,4 +1,3 @@
1
-const { readFileSync } = require('fs');
1
const { resolve } = require('path');
2
const { DefinePlugin } = require('webpack');
3
const { getGitHubURL, getVersionString } = require('../utils');
@@ -43,7 +42,9 @@ module.exports = {
42
{
43
test: /\.js$/,
44
loader: 'babel-loader',
46
- options: JSON.parse(readFileSync(resolve(__dirname, '../../.babelrc'))),
45
+ options: {
46
+ configFile: require.resolve('../../babel.config.js'),
47
+ },
48
},
49
{
50
test: /\.css$/,