Skip to content

Commit cf96a25

Browse files
vikr01amilajack
authored andcommitted
Upgrade to babel 7 (electron-react-boilerplate#1898)
* babel-upgrade * remove add-module-exports plugin * fix import issues with configStore * .babelrc -> babel.config.js * fix babel-preset-env useBuiltIns property * misc changes to linting annotaions
1 parent e735632 commit cf96a25

13 files changed

+1059
-262
lines changed

.babelrc

Lines changed: 0 additions & 33 deletions
This file was deleted.

app/Routes.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
/* eslint flowtype-errors/show-errors: 0 */
21
import React from 'react';
32
import { Switch, Route } from 'react-router';
43
import routes from './constants/routes';

app/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ render(
1616

1717
if (module.hot) {
1818
module.hot.accept('./containers/Root', () => {
19-
const NextRoot = require('./containers/Root'); // eslint-disable-line global-require
19+
// eslint-disable-next-line global-require
20+
const NextRoot = require('./containers/Root').default;
2021
render(
2122
<AppContainer>
2223
<NextRoot store={store} history={history} />

app/main.dev.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* eslint global-require: 0, flowtype-errors/show-errors: 0 */
1+
/* eslint global-require: off */
22

33
/**
44
* This module executes inside of electron's main process. You can start

app/store/configureStore.dev.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ const configureStore = (initialState?: counterStateType) => {
5959
if (module.hot) {
6060
module.hot.accept(
6161
'../reducers',
62-
() => store.replaceReducer(require('../reducers')) // eslint-disable-line global-require
62+
// eslint-disable-next-line global-require
63+
() => store.replaceReducer(require('../reducers').default)
6364
);
6465
}
6566

app/store/configureStore.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
// @flow
2-
if (process.env.NODE_ENV === 'production') {
3-
module.exports = require('./configureStore.prod'); // eslint-disable-line global-require
4-
} else {
5-
module.exports = require('./configureStore.dev'); // eslint-disable-line global-require
6-
}
2+
import configureStoreDev from './configureStore.dev';
3+
import configureStoreProd from './configureStore.prod';
4+
5+
const selectedConfigureStore =
6+
process.env.NODE_ENV === 'production'
7+
? configureStoreProd
8+
: configureStoreDev;
9+
10+
export const { configureStore } = selectedConfigureStore;
11+
12+
export const { history } = selectedConfigureStore;

babel.config.js

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
/* eslint global-require: off */
2+
3+
const developmentEnvironments = ['development', 'test'];
4+
5+
const developmentPlugins = [require('react-hot-loader/babel')];
6+
7+
const productionPlugins = [
8+
require('babel-plugin-dev-expression'),
9+
10+
// babel-preset-react-optimize
11+
require('@babel/plugin-transform-react-constant-elements'),
12+
require('@babel/plugin-transform-react-inline-elements'),
13+
require('babel-plugin-transform-react-remove-prop-types')
14+
];
15+
16+
module.exports = api => {
17+
// see docs about api at https://babeljs.io/docs/en/config-files#apicache
18+
19+
const development = api.env(developmentEnvironments);
20+
21+
return {
22+
presets: [
23+
[
24+
require('@babel/preset-env'),
25+
{
26+
targets: { electron: require('electron/package.json').version },
27+
useBuiltIns: 'usage'
28+
}
29+
],
30+
require('@babel/preset-flow'),
31+
[require('@babel/preset-react'), { development }]
32+
],
33+
plugins: [
34+
// Stage 0
35+
require('@babel/plugin-proposal-function-bind'),
36+
37+
// Stage 1
38+
require('@babel/plugin-proposal-export-default-from'),
39+
require('@babel/plugin-proposal-logical-assignment-operators'),
40+
[require('@babel/plugin-proposal-optional-chaining'), { loose: false }],
41+
[
42+
require('@babel/plugin-proposal-pipeline-operator'),
43+
{ proposal: 'minimal' }
44+
],
45+
[
46+
require('@babel/plugin-proposal-nullish-coalescing-operator'),
47+
{ loose: false }
48+
],
49+
require('@babel/plugin-proposal-do-expressions'),
50+
51+
// Stage 2
52+
[require('@babel/plugin-proposal-decorators'), { legacy: true }],
53+
require('@babel/plugin-proposal-function-sent'),
54+
require('@babel/plugin-proposal-export-namespace-from'),
55+
require('@babel/plugin-proposal-numeric-separator'),
56+
require('@babel/plugin-proposal-throw-expressions'),
57+
58+
// Stage 3
59+
require('@babel/plugin-syntax-dynamic-import'),
60+
require('@babel/plugin-syntax-import-meta'),
61+
[require('@babel/plugin-proposal-class-properties'), { loose: true }],
62+
require('@babel/plugin-proposal-json-strings'),
63+
64+
...(development ? developmentPlugins : productionPlugins)
65+
]
66+
};
67+
};

configs/webpack.config.eslint.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1-
require('babel-register');
1+
/* eslint import/no-unresolved: off, import/no-self-import: off */
2+
require('@babel/register');
23

3-
module.exports = require('./webpack.config.renderer.dev');
4+
module.exports = require('./webpack.config.renderer.dev').default;

configs/webpack.config.renderer.dev.dll.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* eslint global-require: 0, import/no-dynamic-require: 0 */
1+
/* eslint global-require: off, import/no-dynamic-require: off */
22

33
/**
44
* Builds the DLL for development electron renderer process
@@ -29,7 +29,7 @@ export default merge.smart(baseConfig, {
2929
/**
3030
* Use `module` from `webpack.config.renderer.dev.js`
3131
*/
32-
module: require('./webpack.config.renderer.dev').module,
32+
module: require('./webpack.config.renderer.dev').default.module,
3333

3434
entry: {
3535
renderer: Object.keys(dependencies || {}).filter(

configs/webpack.config.renderer.dev.js

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* eslint global-require: 0, import/no-dynamic-require: 0 */
1+
/* eslint global-require: off, import/no-dynamic-require: off */
22

33
/**
44
* Build config for development electron renderer process that uses
@@ -65,15 +65,7 @@ export default merge.smart(baseConfig, {
6565
use: {
6666
loader: 'babel-loader',
6767
options: {
68-
cacheDirectory: true,
69-
plugins: [
70-
// Here, we include babel plugins that are only required for the
71-
// renderer process. The 'transform-*' plugins must be included
72-
// before react-hot-loader/babel
73-
'transform-class-properties',
74-
'transform-es2015-classes',
75-
'react-hot-loader/babel'
76-
]
68+
cacheDirectory: true
7769
}
7870
}
7971
},

package.json

Lines changed: 39 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
"description": "Electron application boilerplate based on React, React Router, Webpack, React Hot Loader for rapid application development",
66
"scripts": {
77
"build": "concurrently \"yarn build-main\" \"yarn build-renderer\"",
8-
"build-dll": "cross-env NODE_ENV=development node --trace-warnings -r babel-register ./node_modules/webpack/bin/webpack --config ./configs/webpack.config.renderer.dev.dll.js --colors",
8+
"build-dll": "cross-env NODE_ENV=development node --trace-warnings -r @babel/register ./node_modules/webpack/bin/webpack --config ./configs/webpack.config.renderer.dev.dll.js --colors",
99
"build-e2e": "cross-env E2E_BUILD=true yarn build",
10-
"build-main": "cross-env NODE_ENV=production node --trace-warnings -r babel-register ./node_modules/webpack/bin/webpack --config ./configs/webpack.config.main.prod.js --colors",
11-
"build-renderer": "cross-env NODE_ENV=production node --trace-warnings -r babel-register ./node_modules/webpack/bin/webpack --config ./configs/webpack.config.renderer.prod.js --colors",
12-
"dev": "cross-env START_HOT=1 node -r babel-register ./internals/scripts/CheckPortInUse.js && cross-env START_HOT=1 yarn start-renderer-dev",
10+
"build-main": "cross-env NODE_ENV=production node --trace-warnings -r @babel/register ./node_modules/webpack/bin/webpack --config ./configs/webpack.config.main.prod.js --colors",
11+
"build-renderer": "cross-env NODE_ENV=production node --trace-warnings -r @babel/register ./node_modules/webpack/bin/webpack --config ./configs/webpack.config.renderer.prod.js --colors",
12+
"dev": "cross-env START_HOT=1 node -r @babel/register ./internals/scripts/CheckPortInUse.js && cross-env START_HOT=1 yarn start-renderer-dev",
1313
"flow": "flow",
1414
"flow-typed": "rimraf flow-typed/npm && flow-typed install --overwrite || true",
1515
"lint": "cross-env NODE_ENV=development eslint --cache --format=pretty .",
@@ -27,12 +27,12 @@
2727
"precommit": "lint-staged",
2828
"prestart": "yarn build",
2929
"start": "cross-env NODE_ENV=production electron ./app/",
30-
"start-main-dev": "cross-env HOT=1 NODE_ENV=development electron -r babel-register ./app/main.dev.js",
31-
"start-renderer-dev": "cross-env NODE_ENV=development node --trace-warnings -r babel-register ./node_modules/webpack-dev-server/bin/webpack-dev-server --config configs/webpack.config.renderer.dev.js",
30+
"start-main-dev": "cross-env HOT=1 NODE_ENV=development electron -r @babel/register ./app/main.dev.js",
31+
"start-renderer-dev": "cross-env NODE_ENV=development node --trace-warnings -r @babel/register ./node_modules/webpack-dev-server/bin/webpack-dev-server --config configs/webpack.config.renderer.dev.js",
3232
"test": "cross-env NODE_ENV=test BABEL_DISABLE_CACHE=1 jest",
3333
"test-all": "yarn lint && yarn flow && yarn build && yarn test && yarn build-e2e && yarn test-e2e",
34-
"test-e2e": "node -r babel-register ./internals/scripts/CheckBuiltsExist.js && cross-env NODE_ENV=test testcafe electron:./ ./test/e2e/HomePage.e2e.js",
35-
"test-e2e-live": "node -r babel-register ./internals/scripts/CheckBuiltsExist.js && cross-env NODE_ENV=test testcafe-live electron:./ ./test/e2e/HomePage.e2e.js",
34+
"test-e2e": "node -r @babel/register ./internals/scripts/CheckBuiltsExist.js && cross-env NODE_ENV=test testcafe electron:./ ./test/e2e/HomePage.e2e.js",
35+
"test-e2e-live": "node -r @babel/register ./internals/scripts/CheckBuiltsExist.js && cross-env NODE_ENV=test testcafe-live electron:./ ./test/e2e/HomePage.e2e.js",
3636
"test-watch": "yarn test --watch"
3737
},
3838
"lint-staged": {
@@ -105,9 +105,9 @@
105105
"url": "git+https://github.com/electron-react-boilerplate/electron-react-boilerplate.git"
106106
},
107107
"author": {
108-
"name" : "Electron React Boilerplte Maintainers",
109-
"email" : "[email protected]",
110-
"url" : "https://electron-react-boilerplate.js.org"
108+
"name": "Electron React Boilerplte Maintainers",
109+
"email": "[email protected]",
110+
"url": "https://electron-react-boilerplate.js.org"
111111
},
112112
"contributors": [
113113
{
@@ -156,20 +156,35 @@
156156
]
157157
},
158158
"devDependencies": {
159-
"babel-core": "^6.26.3",
159+
"@babel/core": "^7.0.0",
160+
"@babel/plugin-proposal-class-properties": "^7.0.0",
161+
"@babel/plugin-proposal-decorators": "^7.0.0",
162+
"@babel/plugin-proposal-do-expressions": "^7.0.0",
163+
"@babel/plugin-proposal-export-default-from": "^7.0.0",
164+
"@babel/plugin-proposal-export-namespace-from": "^7.0.0",
165+
"@babel/plugin-proposal-function-bind": "^7.0.0",
166+
"@babel/plugin-proposal-function-sent": "^7.0.0",
167+
"@babel/plugin-proposal-json-strings": "^7.0.0",
168+
"@babel/plugin-proposal-logical-assignment-operators": "^7.0.0",
169+
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
170+
"@babel/plugin-proposal-numeric-separator": "^7.0.0",
171+
"@babel/plugin-proposal-optional-chaining": "^7.0.0",
172+
"@babel/plugin-proposal-pipeline-operator": "^7.0.0",
173+
"@babel/plugin-proposal-throw-expressions": "^7.0.0",
174+
"@babel/plugin-syntax-dynamic-import": "^7.0.0",
175+
"@babel/plugin-syntax-import-meta": "^7.0.0",
176+
"@babel/plugin-transform-react-constant-elements": "^7.0.0",
177+
"@babel/plugin-transform-react-inline-elements": "^7.0.0",
178+
"@babel/preset-env": "^7.0.0",
179+
"@babel/preset-flow": "^7.0.0",
180+
"@babel/preset-react": "^7.0.0",
181+
"@babel/register": "^7.0.0",
182+
"babel-core": "7.0.0-bridge.0",
160183
"babel-eslint": "^8.2.6",
161-
"babel-jest": "^23.4.2",
162-
"babel-loader": "^7.1.5",
163-
"babel-plugin-add-module-exports": "^0.2.1",
184+
"babel-jest": "^23.6.0",
185+
"babel-loader": "^8.0.0",
164186
"babel-plugin-dev-expression": "^0.2.1",
165-
"babel-plugin-flow-runtime": "^0.17.0",
166-
"babel-plugin-transform-class-properties": "^6.24.1",
167-
"babel-plugin-transform-es2015-classes": "^6.24.1",
168-
"babel-preset-env": "^1.7.0",
169-
"babel-preset-react": "^6.24.1",
170-
"babel-preset-react-optimize": "^1.0.1",
171-
"babel-preset-stage-0": "^6.24.1",
172-
"babel-register": "^6.26.0",
187+
"babel-plugin-transform-react-remove-prop-types": "^0.4.19",
173188
"chalk": "^2.4.1",
174189
"concurrently": "^3.6.1",
175190
"connected-react-router": "^4.4.1",
@@ -203,7 +218,7 @@
203218
"flow-typed": "^2.5.1",
204219
"husky": "^0.14.3",
205220
"identity-obj-proxy": "^3.0.0",
206-
"jest": "^23.4.2",
221+
"jest": "^23.6.0",
207222
"lint-staged": "^7.2.0",
208223
"mini-css-extract-plugin": "^0.4.1",
209224
"node-sass": "^4.9.2",

test/e2e/helpers.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* eslint import/prefer-default-export: 0 */
1+
/* eslint import/prefer-default-export: off */
22
import { ClientFunction } from 'testcafe';
33

44
export const getPageUrl = ClientFunction(() => window.location.href);

0 commit comments

Comments
 (0)