/* eslint-disable no-var */ var webpack = require('webpack'); var path = require('path'); var ExtractTextPlugin = require("extract-text-webpack-plugin"); var HtmlWebpackPlugin = require("html-webpack-plugin"); var package = require('../package.json'); var dependencies = package.dependencies; var config = { bail: true, devtool: 'hidden-source-map', entry: { app: path.resolve(__dirname, '..', 'src', 'index.js'), vendor: Object.keys(dependencies), }, output: { publicPath: '/', path: path.resolve(__dirname, '../build'), filename: '[name].[chunkhash].js', }, resolve: { alias: { app: path.resolve(__dirname, '..', 'app'), src: path.resolve(__dirname, '..', 'src'), shared: path.resolve(__dirname, '..', 'src', 'shared'), style: path.resolve(__dirname, '..', 'src', 'style'), utils: path.resolve(__dirname, '..', 'src', 'utils'), }, }, module: { preLoaders: [ { test: /\.js$/, exclude: [/node_modules/, /(_s|S)pec\.js$/], loader: 'eslint-loader', }, ], loaders: [ { test: /\.json$/, loader: 'json', }, { test: /\.scss$/, loader: ExtractTextPlugin.extract('style-loader', 'css-loader!sass-loader!resolve-url!sass?sourceMap'), }, { test: /\.css$/, loader: ExtractTextPlugin.extract('style-loader', 'css-loader!postcss-loader'), }, { test : /\.(ico|png|jpg|ttf|eot|svg|woff(2)?)(\?[a-z0-9]+)?$/, loader : 'file', }, { test: /\.js$/, exclude: /node_modules/, loader: 'babel', query: { presets: ['es2015', 'react'], cacheDirectory: false, // Using the cache directory on production builds has never been helpful. }, }, ], }, eslint: { failOnWarning: false, failOnError: false, }, plugins: [ new webpack.DefinePlugin({ 'process.env': { NODE_ENV: JSON.stringify('production'), }, }), new webpack.ProvidePlugin({ $: "jquery", jQuery: "jquery", }), new ExtractTextPlugin("style.css"), new HtmlWebpackPlugin({ template: path.resolve(__dirname, '..', 'src', 'index.template.html'), inject: 'body', chunksSortMode: 'dependency', favicon: 'assets/images/favicon.ico', }), new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false } }), new webpack.optimize.CommonsChunkPlugin({ names: ['vendor', 'manifest'], }), function() { /* Webpack does not exit with non-zero status if error. */ this.plugin("done", function(stats) { if (stats.compilation.errors && stats.compilation.errors.length && process.argv.indexOf("--watch") == -1) { console.log(stats.compilation.errors.toString({ colors: true })); process.exit(1); } }); } ], postcss: require('./postcss'), target: 'web', }; module.exports = config;