Skip to content

Commit 0bf64c2

Browse files
authored
Merge pull request #10 from jschr/feature/chrome-devtools
Add redux/react extension for chrome
2 parents 469803b + fe54138 commit 0bf64c2

File tree

7 files changed

+48
-39
lines changed

7 files changed

+48
-39
lines changed

.babelrc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
22
"presets": ["es2015", "stage-0", "react"],
3-
"plugins": ["transform-decorators-legacy"]
3+
"plugins": ["transform-decorators-legacy", "transform-runtime"]
44
}

app/client/actions/index.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import user from './user';
2+
3+
export default {
4+
user
5+
};

app/client/containers/DevTools.js

-23
This file was deleted.

app/client/main.js

+10-10
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,27 @@ import React from 'react';
22
import ReactDOM from 'react-dom';
33
import { compose, createStore, combineReducers } from 'redux';
44
import { Provider } from 'react-redux';
5-
import user from './reducers/user';
65
import App from './containers/App';
7-
import DevTools from './containers/DevTools';
6+
import reducers from './reducers';
7+
import actionCreators from './actions';
88

99
const initialState = {};
1010

11-
const isDevelopment = process.env.NODE_ENV === 'development';
11+
const composeEnhancers = (() => {
12+
const compose_ = window && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__;
13+
if(process.env.NODE_ENV === 'development' && compose_) {
14+
return compose_({ actionCreators });
15+
}
16+
return compose;
17+
})();
1218

13-
const enhancer = isDevelopment ? compose(
14-
// Required! Enable Redux DevTools with the monitors you chose
15-
DevTools.instrument()
16-
) : undefined;
17-
18-
const store = createStore(combineReducers({ user }), initialState, enhancer);
19+
const store = createStore(combineReducers(reducers), initialState, composeEnhancers());
1920
const rootElement = document.querySelector(document.currentScript.getAttribute('data-container'));
2021

2122
ReactDOM.render(
2223
<Provider store={store}>
2324
<div>
2425
<App />
25-
{ isDevelopment && <DevTools /> }
2626
</div>
2727
</Provider>,
2828
rootElement

app/client/reducers/index.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import user from './user';
2+
3+
export default {
4+
user
5+
};

app/main.js

+23-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,25 @@ import {app, crashReporter, BrowserWindow, Menu} from 'electron';
22
import path from 'path';
33
import url from 'url';
44

5+
const isDevelopment = (process.env.NODE_ENV === 'development');
6+
57
let mainWindow = null;
68
let forceQuit = false;
79

10+
const installExtensions = async () => {
11+
const installer = require('electron-devtools-installer');
12+
const extensions = [
13+
'REACT_DEVELOPER_TOOLS',
14+
'REDUX_DEVTOOLS'
15+
];
16+
const forceDownload = !!process.env.UPGRADE_EXTENSIONS;
17+
for (const name of extensions) {
18+
try {
19+
await installer.default(installer[name], forceDownload);
20+
} catch (e) {}
21+
}
22+
};
23+
824
crashReporter.start({
925
productName: 'YourName',
1026
companyName: 'YourCompany',
@@ -20,14 +36,19 @@ app.on('window-all-closed', () => {
2036
}
2137
});
2238

23-
app.on('ready', () => {
39+
app.on('ready', async () => {
40+
if (isDevelopment) {
41+
await installExtensions();
42+
}
43+
2444
mainWindow = new BrowserWindow({
2545
width: 1000,
2646
height: 800,
2747
minWidth: 640,
2848
minHeight: 480,
2949
show: false
3050
});
51+
3152
mainWindow.loadURL(url.format({
3253
pathname: path.join(__dirname, 'client/index.html'),
3354
protocol: 'file:',
@@ -64,7 +85,7 @@ app.on('ready', () => {
6485
}
6586
});
6687

67-
if (process.env.NODE_ENV === 'development') {
88+
if (isDevelopment) {
6889
// auto-open dev tools
6990
mainWindow.webContents.openDevTools();
7091

package.json

+4-3
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,27 @@
77
"repository": "https://github.com/jschr/electron-react-redux-boilerplate",
88
"license": "MIT",
99
"dependencies": {
10+
"electron-compile": "^5.1.3",
1011
"react": "^15.4.2",
1112
"react-dom": "^15.4.2",
1213
"react-redux": "^5.0.2",
1314
"redux": "^3.0.0",
14-
"redux-actions": "^1.2.1",
15-
"electron-compile": "^5.1.3",
16-
"redux-devtools": "^3.3.2"
15+
"redux-actions": "^1.2.1"
1716
},
1817
"devDependencies": {
1918
"babel-cli": "^6.22.2",
2019
"babel-core": "^6.2.1",
2120
"babel-eslint": "^7.1.1",
2221
"babel-plugin-transform-decorators-legacy": "^1.3.4",
22+
"babel-plugin-transform-runtime": "^6.22.0",
2323
"babel-preset-es2015": "^6.1.18",
2424
"babel-preset-react": "^6.22.0",
2525
"babel-preset-stage-0": "^6.1.18",
2626
"browser-sync": "^2.9.3",
2727
"chai": "^3.4.1",
2828
"electron": "^1.5.0",
2929
"electron-compilers": "^5.1.3",
30+
"electron-devtools-installer": "^2.1.0",
3031
"electron-packager": "^8.5.1",
3132
"eslint": "^3.14.1",
3233
"eslint-config-airbnb": "^14.0.0",

0 commit comments

Comments
 (0)