const NODE_ENV = 'production'; const dotenv = require('dotenv'); const webpack = require('webpack'); const fs = require('fs'); const path = require('path'); const autoprefixer = require('autoprefixer'); const precss = require('precss'); const HtmlWebPackPlugin = require('html-webpack-plugin'); const dotEnvVars = dotenv.config(); const envVariables = Object.assign({}, dotEnvVars); const defines = Object.keys(envVariables) .reduce((memo, key) => { const val = JSON.stringify(envVariables[key]); memo[`__${key.toUpperCase()}__`] = val; return memo; }, { __NODE_ENV__: JSON.stringify(NODE_ENV) }); module.exports = { devtool: 'cheap-module-source-map', entry: [ './src/index' ], output: { path: path.resolve(__dirname, './dist'), publicPath: './dist/', filename: 'bundle.js' }, resolve: { extensions: ['', '.js', '.jsx'] }, plugins: [ new webpack.DefinePlugin({ 'process.env':{ 'NODE_ENV': JSON.stringify('production') } }), new HtmlWebPackPlugin({ template: 'src/index.html', filename: '../index.html' }), new webpack.optimize.DedupePlugin(), new webpack.optimize.OccurenceOrderPlugin(), new webpack.optimize.UglifyJsPlugin({ compress:{ warnings: false }, }), new webpack.NoErrorsPlugin(), new webpack.DefinePlugin(defines) ], module: { loaders: [ { test: /\.jsx?$/, exclude: /node_modules/, loaders: ['babel'] }, { test: /\.scss$/, loaders: ['style-loader', 'css-loader', 'postcss-loader'] }, { test: /\.css$/, loaders: ['style-loader', 'css-loader'] }, { test: /\.(png|jpg|svg|woff|woff2)?(\?v=\d+.\d+.\d+)?$/, loader: 'url-loader?limit=8192' }, { test: /\.(eot|ttf)$/, loader: 'file-loader' } ] }, postcss: function() { return [autoprefixer, precss]; } };