105 lines
2.4 KiB
JavaScript
105 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'
|
|
}
|
|
},
|
|
|
|
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()]
|
|
: [])
|
|
};
|