Files
freeCodeCamp/webpack.frame-runner.js
Berkeley Martinez ef80131a29 feat(build): Add source maps to production
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
2018-02-06 13:53:56 -08:00

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
})
);
}