Files
website/webpack.config.js

73 lines
1.7 KiB
JavaScript

const HtmlWebpackPlugin = require("html-webpack-plugin");
const HtmlWebpackInlineSourcePlugin = require("html-webpack-inline-source-plugin");
const path = require("path");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");
const CopyPlugin = require("copy-webpack-plugin");
module.exports = {
entry: ["./src/index.tsx"],
mode: "development",
output: {
path: path.resolve(__dirname, "build"),
publicPath: "/",
},
resolve: {
extensions: ["*", ".js", ".jsx", ".ts", ".tsx", ".json"],
},
module: {
rules: [
{
test: /\.(js|tsx?)$/,
loader: "babel-loader",
},
{
test: /\.(png|svg|jpg|gif|ico)$/,
loader: "file-loader",
options: {
publicPath: './',
esModule: false,
},
},
{
test: /\.css$/,
// exclude: /node_modules/,
use: [
{
loader: MiniCssExtractPlugin.loader,
},
"css-loader",
],
},
],
},
plugins: [
new HtmlWebpackPlugin({
template: "public/index.html",
filename: "index.html",
inlineSource: ".(js|css)",
publicPath: "./",
}),
new MiniCssExtractPlugin({
filename: "styles.css",
}),
new CopyPlugin({
patterns: [
{
from: "./public/manifest.json",
to: "manifest.json"
},
{
from: "./public/*.pdf",
to: "[name][ext]",
noErrorOnMissing: true
}
],
}),
// new HtmlWebpackInlineSourcePlugin(),
],
optimization: {
minimizer: [`...`, new CssMinimizerPlugin()],
},
};