We don't have the same precautions as other sites as our code base is open source, so we might as well make it easier on us to debug production errors
81 lines
1.8 KiB
JavaScript
81 lines
1.8 KiB
JavaScript
const webpack = require('webpack');
|
|
const path = require('path');
|
|
const UglifyPlugin = require('uglifyjs-webpack-plugin');
|
|
|
|
const __DEV__ = process.env.NODE_ENV !== 'production';
|
|
|
|
module.exports = {
|
|
entry: './client/frame-runner.js',
|
|
devtool: __DEV__ ? 'inline-source-map' : 'source-map',
|
|
node: {
|
|
// Mock Node.js modules that Babel require()s but that we don't
|
|
// particularly care about.
|
|
fs: 'empty',
|
|
module: 'empty',
|
|
net: 'empty'
|
|
},
|
|
output: {
|
|
filename: __DEV__ ? 'frame-runner.js' : 'frame-runner-[hash].js',
|
|
path: path.join(__dirname, '/public/js'),
|
|
publicPath: '/js'
|
|
},
|
|
stats: {
|
|
// Examine all modules
|
|
maxModules: Infinity,
|
|
// Display bailout reasons
|
|
optimizationBailout: true
|
|
},
|
|
module: {
|
|
rules: [{
|
|
test: /\.jsx?$/,
|
|
include: [ path.join(__dirname, 'client/') ],
|
|
use: {
|
|
loader: 'babel-loader',
|
|
options: {
|
|
babelrc: false,
|
|
presets: [
|
|
[ 'es2015', { modules: false }],
|
|
[ 'stage-3' ]
|
|
],
|
|
plugins: [
|
|
'transform-runtime',
|
|
'lodash'
|
|
]
|
|
}
|
|
}
|
|
}]
|
|
},
|
|
externals: {
|
|
rx: 'Rx'
|
|
},
|
|
plugins: [
|
|
new webpack.DefinePlugin({
|
|
'process.env': {
|
|
NODE_ENV: JSON.stringify(__DEV__ ? 'development' : 'production')
|
|
},
|
|
__DEVTOOLS__: !__DEV__
|
|
}),
|
|
// Use browser version of visionmedia-debug
|
|
new webpack.NormalModuleReplacementPlugin(
|
|
/debug\/node/,
|
|
'debug/src/browser'
|
|
),
|
|
new webpack.optimize.ModuleConcatenationPlugin()
|
|
]
|
|
};
|
|
|
|
if (__DEV__) {
|
|
module.exports.plugins.push(
|
|
// prevents build on error
|
|
new webpack.NoEmitOnErrorsPlugin()
|
|
);
|
|
} else {
|
|
module.exports.plugins.push(
|
|
new UglifyPlugin({
|
|
test: /\.js($|\?)/i,
|
|
cache: true,
|
|
sourceMap: true
|
|
})
|
|
);
|
|
}
|