Skip to content
This repository was archived by the owner on Jun 28, 2021. It is now read-only.

Commit 6850234

Browse files
authoredMay 15, 2017
Fix webpack (#789)
* eslint fixes * add BabiliPlugin * Add `-chunk` to prod config
1 parent 9c25ad1 commit 6850234

File tree

15 files changed

+1386
-574
lines changed

15 files changed

+1386
-574
lines changed
 

‎README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Read the [contributing] section before creating an issue.
1515
- Ensure you have [nodejs] installed
1616
- Get the source by running `git clone https://github.com/quran/quran.com-frontend/` or creating a [fork]
1717
- Run `npm install` to do first time installation of all dependencies
18-
- Run `npm run dev` to start the dev server
18+
- Run `npm run dev` to start the dev server. Make sure you have pm2 installed globally! `npm install -g pm2`
1919
- Open `http://localhost:8000` in your browser to see the app.
2020

2121
## Staging

‎package.json

+13-9
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"test:dev:lint": "./node_modules/eslint/bin/eslint.js ./src",
1313
"test:stylelint": "stylelint './src/**/*.scss' --config ./webpack/.stylelintrc",
1414
"dev-old": "env NODE_PATH='./src' PORT=8000 UV_THREADPOOL_SIZE=100 node ./webpack/webpack-dev-server.js & env NODE_PATH='./src' PORT=8000 node ./bin/server.js",
15-
"dev": "env NODE_PATH='./src' PORT=8000 UV_THREADPOOL_SIZE=100 node --expose-gc ./node_modules/webpack-dev-server/bin/webpack-dev-server.js --config ./webpack/dev.config.js & env NODE_PATH='./src' PORT=8000 node --expose-gc ./bin/server.js",
15+
"dev": "env NODE_PATH='./src' PORT=8000 UV_THREADPOOL_SIZE=100 node --expose-gc ./node_modules/webpack-dev-server/bin/webpack-dev-server.js --config ./webpack/dev.config.js --progress & env NODE_PATH='./src' PORT=8000 node --expose-gc ./bin/server.js",
1616
"start": "NODE_PATH='src' node ./start",
1717
"build": "npm run build:client & npm run build:server",
1818
"build:server": "babel ./src -d ./dist -D",
@@ -44,7 +44,7 @@
4444
"autoprefixer-loader": "3.2.0",
4545
"babel-cli": "6.11.4",
4646
"babel-core": "^6.24.0",
47-
"babel-loader": "^6.4.1",
47+
"babel-loader": "^7.0.0",
4848
"babel-plugin-add-module-exports": "0.1.4",
4949
"babel-plugin-syntax-dynamic-import": "^6.18.0",
5050
"babel-plugin-system-import-transformer": "^3.1.0",
@@ -58,12 +58,14 @@
5858
"babel-polyfill": "6.13.0",
5959
"babel-preset-es2015": "^6.24.0",
6060
"babel-preset-react": "6.11.1",
61+
"babel-preset-react-optimize": "^1.0.1",
6162
"babel-preset-stage-0": "6.5.0",
6263
"babel-preset-stage-2": "6.13.0",
6364
"babel-register": "6.11.6",
6465
"babel-runtime": "6.11.6",
66+
"babili-webpack-plugin": "^0.0.11",
6567
"body-parser": "1.15.2",
66-
"bootstrap-loader": "2.0.0-beta.19",
68+
"bootstrap-loader": "^2.1.0",
6769
"bootstrap-sass": "3.3.7",
6870
"bundle-loader": "0.5.4",
6971
"cache-manager": "1.5.0",
@@ -82,7 +84,7 @@
8284
"express": "4.14.0",
8385
"express-state": "1.4.0",
8486
"express-useragent": "1.0.4",
85-
"extract-text-webpack-plugin": "2.0.0-beta.5",
87+
"extract-text-webpack-plugin": "^2.1.0",
8688
"file-loader": "0.8.5",
8789
"fontfaceobserver": "1.7.3",
8890
"history": "^3.0.0",
@@ -112,7 +114,7 @@
112114
"react-cookie": "1.0.4",
113115
"react-dom": "15.4.1",
114116
"react-helmet": "3.1.0",
115-
"react-hot-loader": "3.0.0-beta.6",
117+
"react-hot-loader": "next",
116118
"react-inlinesvg": "0.5.4",
117119
"react-intl": "2.1.5",
118120
"react-loadable": "^3.3.1",
@@ -131,7 +133,7 @@
131133
"reselect": "2.5.3",
132134
"resolve-url": "0.2.1",
133135
"resolve-url-loader": "1.6.1",
134-
"sass-loader": "4.1.1",
136+
"sass-loader": "^6.0.5",
135137
"serialize-javascript": "1.3.0",
136138
"serve-favicon": "2.3.0",
137139
"sitemap": "1.8.1",
@@ -140,8 +142,9 @@
140142
"superagent": "3.3.1",
141143
"url": "0.11.0",
142144
"url-loader": "0.5.7",
143-
"webpack": "2.2.0",
144-
"webpack-dev-server": "2.1.0-beta.0",
145+
"webpack": "^2.5.1",
146+
"webpack-dev-middleware": "^1.10.2",
147+
"webpack-dev-server": "^2.4.5",
145148
"webpack-isomorphic-tools": "2.5.7",
146149
"winston": "1.1.2"
147150
},
@@ -186,14 +189,15 @@
186189
"react-transform-catch-errors": "1.0.0",
187190
"react-transform-hmr": "1.0.1",
188191
"redbox-react": "1.1.1",
189-
"redux-devtools": "3.1.1",
192+
"redux-devtools": "^3.4.0",
190193
"redux-devtools-dock-monitor": "1.1.0",
191194
"redux-devtools-log-monitor": "1.0.5",
192195
"sinon": "1.15.3",
193196
"sinon-chai": "2.8.0",
194197
"stylelint": "7.1.0",
195198
"stylelint-webpack-plugin": "0.2.0",
196199
"webpack-bundle-analyzer": "2.2.1",
200+
"webpack-dashboard": "^0.4.0",
197201
"webpack-dev-server": "2.1.0-beta.0",
198202
"webpack-hot-middleware": "2.12.2"
199203
}

‎src/client.js

+42-29
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,23 @@
11
/* global document, window, $ */
2-
import 'babel-polyfill';
3-
42
import React from 'react';
53
import ReactDOM from 'react-dom';
64
import reactCookie from 'react-cookie';
7-
import Provider from 'react-redux/lib/components/Provider';
85
import Router from 'react-router/lib/Router';
96
import match from 'react-router/lib/match';
107
import browserHistory from 'react-router/lib/browserHistory';
118
import applyRouterMiddleware from 'react-router/lib/applyRouterMiddleware';
129
import useScroll from 'react-router-scroll';
1310
import { ReduxAsyncConnect } from 'redux-connect';
1411
import { syncHistoryWithStore } from 'react-router-redux';
15-
import { IntlProvider } from 'react-intl';
12+
import { AppContainer } from 'react-hot-loader';
1613

1714
import debug from 'debug';
1815

1916
import config from './config';
2017
import ApiClient from './helpers/ApiClient';
2118
import createStore from './redux/create';
2219
import routes from './routes';
23-
import getLocalMessages from './helpers/setLocal';
20+
import Root from './containers/Root';
2421

2522
const client = new ApiClient();
2623
const store = createStore(browserHistory, client, window.reduxData);
@@ -45,31 +42,47 @@ window.clearCookies = () => {
4542
reactCookie.remove('smartbanner-installed');
4643
};
4744

48-
match({ history, routes: routes(store) }, (error, redirectLocation, renderProps) => {
49-
const component = (
50-
<Router
51-
{...renderProps}
52-
render={props => (
53-
<ReduxAsyncConnect
54-
{...props}
55-
helpers={{ client }}
56-
render={applyRouterMiddleware(useScroll())}
57-
/>
58-
)}
59-
/>
60-
);
45+
match(
46+
{ history, routes: routes(store) },
47+
(error, redirectLocation, renderProps) => {
48+
const component = (
49+
<Router
50+
{...renderProps}
51+
render={props => (
52+
<ReduxAsyncConnect
53+
{...props}
54+
helpers={{ client }}
55+
render={applyRouterMiddleware(useScroll())}
56+
/>
57+
)}
58+
/>
59+
);
60+
61+
const mountNode = document.getElementById('app');
62+
63+
debug('client', 'React Rendering');
6164

62-
const mountNode = document.getElementById('app');
65+
ReactDOM.render(
66+
<AppContainer>
67+
<Root component={component} store={store} />
68+
</AppContainer>,
69+
mountNode,
70+
() => {
71+
debug('client', 'React Rendered');
72+
}
73+
);
6374

64-
debug('client', 'React Rendering');
75+
if (module.hot) {
76+
module.hot.accept('./containers/Root', () => {
77+
const NextRoot = require('./containers/Root'); // eslint-disable-line global-require
6578

66-
ReactDOM.render(
67-
<IntlProvider locale="en" messages={getLocalMessages()}>
68-
<Provider store={store} key="provider">
69-
{component}
70-
</Provider>
71-
</IntlProvider>, mountNode, () => {
72-
debug('client', 'React Rendered');
79+
ReactDOM.render(
80+
<AppContainer>
81+
<NextRoot store={store} component={component} />
82+
</AppContainer>,
83+
document.getElementById('root')
84+
);
85+
});
7386
}
74-
);
75-
});
87+
}
88+
);

0 commit comments

Comments
 (0)
This repository has been archived.