rookeries/webpack.config.babel.js

106 lines
2.4 KiB
JavaScript

import path from 'path';
import ExtractTextPlugin from 'extract-text-webpack-plugin';
import HtmlWebpackPlugin from 'html-webpack-plugin';
import webpack from 'webpack';
import MinifyPlugin from 'babel-minify-webpack-plugin';
const ENV = process.env.NODE_ENV || 'development';
export default {
entry: ['babel-polyfill', './src/entry.js'],
output: {
path: path.resolve(__dirname, 'static', 'js'),
filename: 'rookeries.js'
},
module: {
rules: [
{
enforce: 'pre',
test: /\.js$/,
exclude: [
/node_modules/,
],
loader: 'eslint-loader',
options: {
emitWarning: true
}
},
{
test: /\.js/,
include: [
path.resolve(__dirname, 'src'),
],
exclude: [
/node_modules/,
],
loader: 'babel-loader'
},
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: 'css-loader'
})
},
{
test: /\.html/,
loader: 'html-loader',
},
// From https://github.com/shakacode/font-awesome-loader/blob/master/docs/usage-webpack2.md
{
test: /\.woff2?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
// Limiting the size of the woff fonts breaks font-awesome ONLY for the extract text plugin
// loader: "url?limit=10000"
use: 'url-loader'
},
{
test: /\.(ttf|eot|svg)(\?[\s\S]+)?$/,
use: 'file-loader'
},
]
},
devtool: ENV === 'production' ? 'source-map' : 'cheap-module-eval-source-map',
devServer: {
contentBase: './',
historyApiFallback: true,
host: '0.0.0.0',
hot: true,
port: 3000,
proxy: {
'/api': 'http://localhost:5000',
'/auth': 'http://localhost:5000',
'/status': 'http://localhost:5000'
}
},
resolve: {
alias: {
'react': 'preact-compat',
'react-dom': 'preact-compat',
}
},
plugins: ([
new webpack.NoEmitOnErrorsPlugin(),
new ExtractTextPlugin('rookeries.css'),
new HtmlWebpackPlugin({
favicon: './static/images/mr-penguin-amber-favicon.ico',
title: 'Rookeries - Webpack Dev',
template: './templates/webpack_base.html',
xhtml: true
}),
new webpack.HotModuleReplacementPlugin(),
new webpack.DefinePlugin({
'process.env.BROWSER_ENV': JSON.stringify(true)
})
]).concat(ENV === 'production'
? [new MinifyPlugin()]
: [])
};