scratchjr-website/webpack.config.js

67 lines
1.7 KiB
JavaScript
Raw Normal View History

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