const webpack = require('webpack'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const history = require('connect-history-api-fallback'); const convert = require('koa-connect'); const internalIp = require('internal-ip'); module.exports = { devtool: process.env.WEBPACK_SERVE ? 'source-map' : false, mode: process.env.WEBPACK_SERVE ? 'development' : 'production', entry: { 'Juick': [ 'babel-polyfill', 'file-loader?name=index.html!./src/views/index.html', __dirname + '/src/index.js', __dirname + '/src/style/main.css' ] }, module: { rules: [ { test: /\.css$/, use: [ MiniCssExtractPlugin.loader, { loader: "css-loader" }, { loader: "postcss-loader", options: { plugins: () => [ require('autoprefixer')({ browsers: 'last 4 versions, > 1%, ie >= 8' }) ] } } ] }, { test: /\.js$/, exclude: /node_modules\/(?!query-string)/, loader: 'babel-loader' }, { test: /\.(jpe?g|png|gif|svg)$/i, loaders: [ 'file-loader?hash=sha512&digest=hex&name=[hash].[ext]' ]} ] }, plugins: [ new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), new MiniCssExtractPlugin({ filename: "Juick.css", allChunks: true }) ], }; module.exports.serve = { content: [__dirname], host: internalIp.v4.sync(), add: (app, middleware, options) => { const historyOptions = { // ... see: https://github.com/bripkens/connect-history-api-fallback#options }; app.use(convert(history(historyOptions))); } };