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

Commit 19c8680

Browse files
chore(build): Webpack builds once with all chunks
Closes #174
1 parent ff27f11 commit 19c8680

24 files changed

+57
-58
lines changed

Procfile.dev

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
www: webpack-dev-server --inline --hot --config webpack.config.www.js
2-
web: nodemon --ignore dist/ -e js,jsx server
3-
# DON'T REORDER the process above this line
4-
# FIXME https://github.com/webpack/webpack/issues/2801
5-
manifest: webpack-dev-server --config webpack.config.extension.js
6-
background: ENTRY=background webpack-dev-server --inline --hot --config webpack.config.extension.js
7-
options: ENTRY=options webpack-dev-server --inline --hot --config webpack.config.extension.js
8-
top-frame: ENTRY=top-frame webpack-dev-server --config webpack.config.extension.js
9-
redis: redis-server
1+
www: webpack-dev-server --inline --hot --config webpack.config.www.js
2+
web: nodemon --ignore dist/ -e js,jsx server
3+
extension: webpack-dev-server --config webpack.config.extension.js
4+
redis: redis-server

components/AccountHovercard/AccountHovercard.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ var AccountHeader = require('../AccountHeader/AccountHeader');
77
var Collapsable = require('../Collapsable/Collapsable');
88
var Err = require('../Err/Err');
99
var Loading = require('../Loading/Loading');
10-
var actions = require('../../redux/actions');
10+
var actions = require('../../redux/actions.top-frame');
1111
var browser = require('../../extension/browser');
1212
var config = require('../../integrations/config');
1313
var dom = require('../../utils/dom');

components/ContentDescription/ContentDescription.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ var classnames = require('classnames');
33
var connect = require('react-redux').connect;
44

55
var Collapsable = require('../Collapsable/Collapsable');
6-
var actions = require('../../redux/actions');
6+
var actions = require('../../redux/actions.top-frame');
77
var entityLabel = require('../../utils/entity-label');
88
var report = require('../../report');
99
var styles = require('./ContentDescription.styles');

components/ContentHeader/ContentHeader.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ var classnames = require('classnames');
44
var connect = require('react-redux').connect;
55

66
var browser = require('../../extension/browser');
7-
var actions = require('../../redux/actions');
7+
var actions = require('../../redux/actions.top-frame');
88
var config = require('../../integrations/config');
99
var entityLabel = require('../../utils/entity-label');
1010
var report = require('../../report');

components/Discussions/Discussions.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ var connect = require('react-redux').connect;
66
var DiscussionComment = require('../DiscussionComment/DiscussionComment');
77
var Err = require('../Err/Err');
88
var Loading = require('../Loading/Loading');
9-
var actions = require('../../redux/actions');
9+
var actions = require('../../redux/actions.top-frame');
1010
var browser = require('../../extension/browser');
1111
var config = require('../../integrations/config');
1212
var entityLabel = require('../../utils/entity-label');

components/Err/Err.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ var React = require('react');
22
var classnames = require('classnames');
33
var connect = require('react-redux').connect;
44

5-
var actions = require('../../redux/actions');
5+
var actions = require('../../redux/actions.top-frame');
66
var browser = require('../../extension/browser');
77
var report = require('../../report');
88
var styles = require('./Err.styles');

components/Hovercard/Hovercard.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ var connect = require('react-redux').connect;
55

66
var AccountHovercard = require('../AccountHovercard/AccountHovercard');
77
var ContentHovercard = require('../ContentHovercard/ContentHovercard');
8-
var actions = require('../../redux/actions');
8+
var actions = require('../../redux/actions.top-frame');
99
var dom = require('../../utils/dom');
1010
var entityLabel = require('../../utils/entity-label');
1111
var report = require('../../report');

components/Hovercards/Hovercards.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ var createStructuredSelector = require('reselect').createStructuredSelector;
55

66
require('./Hovercards.styles');
77
var Hovercard = require('../Hovercard/Hovercard');
8-
var actions = require('../../redux/actions');
8+
var actions = require('../../redux/actions.top-frame');
99
var dom = require('../../utils/dom');
1010
var entityLabel = require('../../utils/entity-label');
1111
var urls = require('../../integrations/urls');

components/Media/Media.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ var OEmbed = require('../OEmbed/OEmbed');
99
var SoundCloudPlayer = require('../SoundCloudPlayer/SoundCloudPlayer');
1010
var Video = require('../Video/Video');
1111
var YoutubeVideo = require('../YoutubeVideo/YoutubeVideo');
12-
var actions = require('../../redux/actions');
12+
var actions = require('../../redux/actions.top-frame');
1313
var entityLabel = require('../../utils/entity-label');
1414
var report = require('../../report');
1515
var styles = require('./Media.styles');

components/Options/Options.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ var connect = require('react-redux').connect;
55
var createStructuredSelector = require('reselect').createStructuredSelector;
66

77
var IntegrationOptions = require('../IntegrationOptions/IntegrationOptions');
8-
var actions = require('../../redux/actions');
8+
var actions = require('../../redux/actions.options');
99
var styles = require('./Options.styles');
1010

1111
module.exports = connect(

extension/index.background.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
require('../report');
2-
var createStore = require('../redux/createStore');
2+
var createStore = require('../redux/createStore.background');
33

44
require('./content-security-policy');
55
require('./set-uninstall-url');

extension/index.options.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ var React = require('react');
44
var ReactDOM = require('react-dom');
55

66
var Options = require('../components/Options/Options');
7-
var createStore = require('../redux/createStore');
7+
var createStore = require('../redux/createStore.options');
88

9-
var store = createStore();
9+
global.document.getElementById('mount').className = 'hovercards-root';
1010

1111
ReactDOM.render(
12-
<Provider store={store}>
12+
<Provider store={createStore()}>
1313
<Options />
1414
</Provider>,
1515
global.document.getElementById('mount')

extension/index.top-frame.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ var React = require('react');
44
var ReactDOM = require('react-dom');
55

66
var Hovercards = require('../components/Hovercards/Hovercards');
7-
var createStore = require('../redux/createStore');
7+
var createStore = require('../redux/createStore.top-frame');
88

99
var element = document.documentElement.insertBefore(document.createElement('div'), null);
1010
element.className = 'hovercards-root';

package.json

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,7 @@
1212
},
1313
"scripts": {
1414
"build": "npm run clean && run-s build:*",
15-
"build:extension": "NODE_ENV=production webpack -p --config webpack.config.extension.js && run-s build:extension:*",
16-
"build:extension:background": "NODE_ENV=production ENTRY=background webpack -p --config webpack.config.extension.js",
17-
"build:extension:options": "NODE_ENV=production ENTRY=options webpack -p --config webpack.config.extension.js",
18-
"build:extension:top-frame": "NODE_ENV=production ENTRY=top-frame webpack -p --config webpack.config.extension.js",
15+
"build:extension": "NODE_ENV=production webpack -p --config webpack.config.extension.js",
1916
"build:www": "NODE_ENV=production webpack -p --config webpack.config.www.js",
2017
"check": "run-s check:*",
2118
"check:css": "stylelint \"**/*.css\" --color --ignore-path .gitignore",

redux/actions.background.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module.exports = Object.assign(
22
{},
3-
require('./analytics.actions'),
4-
require('./authentication.actions'),
5-
require('./entities.actions')
3+
require('./analytics.actions.background'),
4+
require('./authentication.actions.background'),
5+
require('./entities.actions.background')
66
);

redux/actions.top-frame.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module.exports = Object.assign(
22
{},
3-
require('./analytics.actions'),
4-
require('./authentication.actions'),
5-
require('./entities.actions')
3+
require('./analytics.actions.top-frame'),
4+
require('./authentication.actions.top-frame'),
5+
require('./entities.actions.top-frame')
66
);

redux/authentication.actions.background.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ var _ = require('underscore');
22
var createAction = require('redux-actions').createAction;
33
var errors = require('feathers-errors');
44

5-
var analyticsActions = require('./analytics.actions');
5+
var analyticsActions = require('./analytics.actions.background');
66
var browser = require('../extension/browser');
77
var integrationsConfig = require('../integrations/config');
88

redux/createStore.background.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
var actions = require('./actions.background');
12
var createStore = require('./createStore.common');
23

34
module.exports = function(initialState) {
45
return createStore(
6+
actions,
57
{
68
authentication: require('./authentication.reducer'),
79
entities: require('./entities.reducer')

redux/createStore.common.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@ var combineReducers = require('redux').combineReducers;
44
var createStore = require('redux').createStore;
55
var thunkMiddlware = require('redux-thunk').default;
66

7-
var actions = require('./actions');
87
var browser = require('../extension/browser');
98
var report = require('../report');
109

1110
createStore = applyMiddleware(thunkMiddlware)(createStore);
1211

13-
module.exports = function(reducers, initialState) {
12+
module.exports = function(actions, reducers, initialState) {
1413
var store = createStore(combineReducers(reducers), initialState);
1514

1615
if (!process.env.NODE_ENV) {

redux/createStore.options.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
var actions = require('./actions.options');
12
var createStore = require('./createStore.common');
23

34
module.exports = function(initialState) {
45
return createStore(
6+
actions,
57
{
68
options: require('./options.reducer')
79
},

redux/createStore.top-frame.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
var actions = require('./actions.top-frame');
12
var createStore = require('./createStore.common');
23

34
module.exports = function(initialState) {
45
return createStore(
6+
actions,
57
{
68
authentication: require('./authentication.reducer'),
79
entities: require('./entities.reducer'),

redux/entities.actions.background.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
var createAction = require('redux-actions').createAction;
22

3-
var analyticsActions = require('./analytics.actions');
3+
var analyticsActions = require('./analytics.actions.background');
44
var browser = require('../extension/browser');
5-
var integrations = require('../integrations');
5+
var integrations = require('../integrations/index.background');
66
var integrationsConfig = require('../integrations/config');
77
var entityLabel = require('../utils/entity-label');
88
var report = require('../report');

webpack.config.extension.js

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,16 @@ var safeImportant = require('postcss-safe-important');
1515
var webpack = require('webpack');
1616

1717
module.exports = {
18-
// FIXME https://github.com/webpack/webpack/issues/2801
19-
entry: process.env.ENTRY ? { [process.env.ENTRY]: './extension/index' } : { manifest: './extension/manifest' },
18+
entry: {
19+
'background': './extension/index.background',
20+
'manifest': './extension/manifest',
21+
'options': './extension/index.options',
22+
'top-frame': './extension/index.top-frame'
23+
},
2024
output: {
2125
filename: '[name].js',
2226
path: 'dist',
23-
publicPath: process.env.ENTRY === 'top-frame' ? 'chrome-extension://__MSG_@@extension_id__/' : ''
27+
publicPath: 'chrome-extension://' + process.env.CHROME_EXTENSION_ID + '/'
2428
},
2529
module: {
2630
loaders: [
@@ -59,7 +63,6 @@ module.exports = {
5963
},
6064
resolve: {
6165
extensions: extensions(
62-
process.env.ENTRY && ['.' + process.env.ENTRY, ''],
6366
['.extension', '.browser', ''],
6467
['.json', '.js', '.css']
6568
)
@@ -79,6 +82,7 @@ module.exports = {
7982
},
8083
plugins: _.compact([
8184
new webpack.EnvironmentPlugin([
85+
'CHROME_EXTENSION_ID',
8286
'GOOGLE_ANALYTICS_ID',
8387
'INSTAGRAM_CLIENT_ID',
8488
'NODE_ENV',
@@ -89,36 +93,32 @@ module.exports = {
8993
'npm_package_gitHead'
9094
]),
9195
new BellOnBundlerErrorPlugin(),
92-
!process.env.ENTRY && !process.env.NODE_ENV && new CleanWebpackPlugin(['dist']),
93-
!process.env.ENTRY && new CopyWebpackPlugin([
96+
new CleanWebpackPlugin(['dist']),
97+
new CopyWebpackPlugin([
9498
{ from: 'assets/images/logo-*', to: 'assets/images', flatten: true },
9599
{ from: 'extension/copy.json', to: '_locales/en/messages.json' }
96100
]),
97101
new ExtractTextPlugin('[name].css'),
98-
process.env.ENTRY === 'options' && new HtmlWebpackPlugin({
102+
new HtmlWebpackPlugin({
99103
title: 'HoverCard Options',
100104
filename: 'options.html',
101105
template: require('html-webpack-template'),
102106
inject: false,
107+
chunks: ['options'],
103108
appMountId: 'mount'
104109
}),
105110
new StringReplacePlugin(),
106111
new WriteFilePlugin({ log: false })
107112
]),
108113
postcss: function() {
109-
return process.env.ENTRY === 'top-frame' ?
110-
[
111-
nested({ bubble: ['raw'] }),
112-
autoprefixer,
113-
raw.inspect(),
114-
increaseSpecificity({ stackableRoot: ':global(.hovercards-root)', repeat: 1 }),
115-
raw.write(),
116-
safeImportant
117-
] :
118-
[
119-
nested,
120-
autoprefixer
121-
];
114+
return [
115+
nested({ bubble: ['raw'] }),
116+
autoprefixer,
117+
raw.inspect(),
118+
increaseSpecificity({ stackableRoot: ':global(.hovercards-root)', repeat: 1 }),
119+
raw.write(),
120+
safeImportant
121+
];
122122
}
123123
};
124124

webpack.config.www.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
var BellOnBundlerErrorPlugin = require('bell-on-bundler-error-plugin');
2+
var CleanWebpackPlugin = require('clean-webpack-plugin');
23
var CopyWebpackPlugin = require('copy-webpack-plugin');
34
var ExtractTextPlugin = require('extract-text-webpack-plugin');
45
var FaviconsWebpackPlugin = require('favicons-webpack-plugin');
@@ -42,6 +43,7 @@ module.exports = {
4243
'CHROME_EXTENSION_ID'
4344
]),
4445
new BellOnBundlerErrorPlugin(),
46+
new CleanWebpackPlugin(['dist-www']),
4547
new CopyWebpackPlugin([
4648
{ from: 'assets/images/facebeefbanner.jpg', to: 'images' },
4749
{ from: 'www/CNAME' }

0 commit comments

Comments
 (0)