108 lines
2.4 KiB
JavaScript
108 lines
2.4 KiB
JavaScript
const path = require("path");
|
|
const HtmlWebpackPlugin = require("html-webpack-plugin");
|
|
const webpack = require("webpack");
|
|
|
|
const plugins = [
|
|
new HtmlWebpackPlugin({
|
|
favicon: "./public/favicon.ico",
|
|
template: "./public/index.html",
|
|
}),
|
|
new webpack.ProvidePlugin({
|
|
Buffer: ["buffer", "Buffer"],
|
|
}),
|
|
new webpack.ProvidePlugin({
|
|
process: "process/browser",
|
|
}),
|
|
require("tailwindcss"),
|
|
new webpack.ContextReplacementPlugin(/sodium/, (data) => {
|
|
delete data.dependencies[0].critical;
|
|
return data;
|
|
}),
|
|
];
|
|
|
|
module.exports = (env, argv) => ({
|
|
entry: "./src/main.jsx",
|
|
mode: argv.mode || "development",
|
|
devtool: argv.mode === "production" ? false : "eval-source-map",
|
|
plugins,
|
|
output: {
|
|
clean: true,
|
|
path: path.resolve(__dirname, "build"),
|
|
assetModuleFilename: "assets/[fullhash:12][ext]",
|
|
filename: "main.[fullhash:8].js",
|
|
},
|
|
devServer: {
|
|
open: true,
|
|
static: {
|
|
directory: path.join(__dirname, "public"),
|
|
},
|
|
compress: true,
|
|
port: "auto",
|
|
hot: true,
|
|
client: {
|
|
progress: true,
|
|
},
|
|
proxy: {
|
|
"/api/**": {
|
|
target: "https://tn-alpha.idntty.org:8080/",
|
|
secure: false,
|
|
changeOrigin: true,
|
|
},
|
|
},
|
|
},
|
|
|
|
ignoreWarnings: [() => false],
|
|
|
|
module: {
|
|
rules: [
|
|
{ test: /\.(html)$/, use: ["html-loader"] },
|
|
{
|
|
test: /\.m?jsx?$/,
|
|
exclude: /(node_modules|bower_components)/,
|
|
use: {
|
|
loader: "babel-loader",
|
|
},
|
|
},
|
|
{
|
|
test: /\.scss$/,
|
|
use: [
|
|
{
|
|
loader: "style-loader",
|
|
},
|
|
{
|
|
loader: "css-loader",
|
|
},
|
|
|
|
{
|
|
loader: "postcss-loader",
|
|
},
|
|
{
|
|
loader: "sass-loader",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
test: /\.(png|svg|jpg|gif)$/,
|
|
loader: "file-loader",
|
|
options: {
|
|
outputPath: "assets",
|
|
},
|
|
},
|
|
],
|
|
},
|
|
resolve: {
|
|
extensions: [".js", ".jsx"],
|
|
fallback: {
|
|
path: require.resolve("path-browserify"),
|
|
os: require.resolve("os-browserify/browser"),
|
|
querystring: require.resolve("querystring-es3"),
|
|
crypto: require.resolve("crypto-browserify"),
|
|
util: require.resolve("util/"),
|
|
stream: require.resolve("stream-browserify"),
|
|
url: require.resolve("url/"),
|
|
buffer: require.resolve("buffer/"),
|
|
fs: false,
|
|
},
|
|
},
|
|
});
|