43 lines
1.1 KiB
JavaScript
43 lines
1.1 KiB
JavaScript
|
const path = require("path");
|
||
|
const ManifestPlugin = require("webpack-manifest-plugin");
|
||
|
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
||
|
|
||
|
const isDev = process.env.NODE_ENV === "development";
|
||
|
|
||
|
const baseFilename = isDev ? "index" : "index.[contenthash]";
|
||
|
|
||
|
module.exports = {
|
||
|
mode: isDev ? "development" : "production",
|
||
|
entry: [
|
||
|
path.resolve(__dirname, "public", "js", "index.js"),
|
||
|
path.resolve(__dirname, "public", "css", "index.css"),
|
||
|
],
|
||
|
output: {
|
||
|
path: path.resolve(__dirname, "_site", "assets"),
|
||
|
filename: `${baseFilename}.js`,
|
||
|
},
|
||
|
module: {
|
||
|
rules: [
|
||
|
{
|
||
|
test: /\.m?js$/,
|
||
|
exclude: /(node_modules)/,
|
||
|
use: {
|
||
|
loader: "babel-loader",
|
||
|
options: {
|
||
|
presets: ["@babel/preset-env"],
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
{
|
||
|
test: /\.css$/,
|
||
|
use: [MiniCssExtractPlugin.loader, "css-loader", "postcss-loader"],
|
||
|
},
|
||
|
],
|
||
|
},
|
||
|
devtool: isDev ? "eval" : "source-map",
|
||
|
plugins: [
|
||
|
new MiniCssExtractPlugin({ filename: `${baseFilename}.css` }),
|
||
|
new ManifestPlugin({ publicPath: "/assets/" }),
|
||
|
],
|
||
|
};
|