Skip to content

Commit 8502225

Browse files
committed
fix(CircleCI-Public#48) webpacking the server for production
1 parent eaa8fd5 commit 8502225

File tree

3 files changed

+56
-5
lines changed

3 files changed

+56
-5
lines changed

index.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
require('babel-register');
2-
require('babel-polyfill');
3-
require('css-modules-require-hook');
4-
require('./server/server');
1+
/* eslint-disable */
2+
if (process.env.NODE_ENV === 'production') {
3+
require('./static/dist/server.bundle.js');
4+
} else {
5+
require('babel-register');
6+
require('babel-polyfill');
7+
require('css-modules-require-hook');
8+
require('./server/server');
9+
}

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
"start:prod": "cross-env NODE_ENV=production node index.js",
1010
"bs": "npm run clean && npm run build && npm run start:prod",
1111
"minify": "cleancss -o static/css/app.min.css static/css/app.css",
12-
"build": "cross-env NODE_ENV=production webpack --config webpack.config.prod.js && npm run minify",
12+
"build": "cross-env NODE_ENV=production webpack --config webpack.config.prod.js && npm run build:server && npm run minify",
13+
"build:server": "webpack --config webpack.server.js",
1314
"clean": "rimraf static/dist",
1415
"slate": "rimraf node_modules && npm install",
1516
"lint": "eslint client server"

webpack.server.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/* eslint-disable */
2+
var fs = require('fs');
3+
var path = require('path');
4+
5+
module.exports = {
6+
7+
entry: path.resolve(__dirname, 'server/server.js'),
8+
9+
output: {
10+
path: __dirname + '/static/dist/',
11+
filename: 'server.bundle.js',
12+
},
13+
14+
target: 'node',
15+
16+
// keep node_module paths out of the bundle
17+
externals: fs.readdirSync(path.resolve(__dirname, 'node_modules')).concat([
18+
'react-dom/server', 'react/addons',
19+
]).reduce(function (ext, mod) {
20+
ext[mod] = 'commonjs ' + mod;
21+
return ext;
22+
}, {}),
23+
24+
node: {
25+
__filename: true,
26+
__dirname: true,
27+
},
28+
29+
module: {
30+
loaders: [
31+
{
32+
test: /\.js$/,
33+
exclude: /node_modules/,
34+
loader: 'babel-loader',
35+
query: {
36+
presets: [
37+
'react',
38+
'es2015',
39+
'stage-0',
40+
],
41+
},
42+
},
43+
],
44+
},
45+
};

0 commit comments

Comments
 (0)