66 lines
1.5 KiB
JavaScript
66 lines
1.5 KiB
JavaScript
"use strict";
|
|
|
|
const webpack = require("webpack");
|
|
const { merge } = require("webpack-merge");
|
|
const FriendlyErrorsPlugin = require("friendly-errors-webpack-plugin");
|
|
const HtmlWebpackPlugin = require("html-webpack-plugin");
|
|
const helpers = require("./helpers");
|
|
const commonConfig = require("./webpack.config.common");
|
|
const environment = require("./env/dev.env");
|
|
const MiniCSSExtractPlugin = require("mini-css-extract-plugin");
|
|
|
|
let webpackConfig = merge(commonConfig(true), {
|
|
mode: "development",
|
|
devtool: "eval-cheap-module-source-map",
|
|
output: {
|
|
path: helpers.root("dist"),
|
|
publicPath: "/",
|
|
filename: "js/[name].bundle.js",
|
|
},
|
|
optimization: {
|
|
concatenateModules: true,
|
|
splitChunks: {
|
|
chunks: "initial",
|
|
},
|
|
},
|
|
plugins: [
|
|
new webpack.EnvironmentPlugin(environment),
|
|
new FriendlyErrorsPlugin(),
|
|
new MiniCSSExtractPlugin({
|
|
filename: "css/[name].css",
|
|
}),
|
|
],
|
|
devServer: {
|
|
compress: true,
|
|
historyApiFallback: true,
|
|
host: "0.0.0.0",
|
|
hot: true,
|
|
overlay: true,
|
|
stats: {
|
|
normal: true,
|
|
},
|
|
proxy: {
|
|
"/api": {
|
|
target: "http://localhost:30030",
|
|
changeOrigin: true,
|
|
},
|
|
"/socket.io": {
|
|
target: "ws://localhost:30030",
|
|
changeOrigin: false,
|
|
ws: true,
|
|
},
|
|
},
|
|
writeToDisk: false,
|
|
},
|
|
});
|
|
|
|
webpackConfig = merge(webpackConfig, {
|
|
plugins: [
|
|
new HtmlWebpackPlugin({
|
|
template: "frontend/templates/Index.html",
|
|
}),
|
|
],
|
|
});
|
|
|
|
module.exports = webpackConfig;
|