var CopyWebpackPlugin = require('copy-webpack-plugin'); var HtmlWebpackPlugin = require('html-webpack-plugin'); var path = require('path'); var routes = require('./src/routes.json'); // Prepare all entry points var entry = { common: [ // Vendor 'react', 'react-dom' ] }; routes.forEach(function (route) { if (!route.redirect) { entry[route.name] = './src/views/' + route.name + '/' + route.name + '.jsx'; } }); module.exports = { entry: entry, output: { path: path.resolve(__dirname, 'build'), filename: 'js/[name].bundle.js' }, module: { loaders: [{ test: /\.jsx$/, loader: 'babel-loader', include: path.resolve(__dirname, 'src'), query: { presets: ['es2015', 'react'] } }, { test: /\.scss$/, loader: 'style!css!postcss-loader!sass' }, { test: /\.json$/, loader: 'json-loader' }, { test: /\.css$/, loader: 'style!css!postcss-loader' }, { test: /\.(png|jpg|gif|eot|svg|ttf|woff)$/, loader: 'url-loader' }, { test: /\.less$/, loader: 'style!css!less' }] }, plugins: [ new CopyWebpackPlugin([{ from: 'static' }]) ].concat(routes .filter(function (route) {return !route.redirect;}) .map(function (route) { return new HtmlWebpackPlugin(Object.assign({}, require('./src/template-config.js'), { title: route.title, filename: route.name + '.html', route: route })); }) ) };