const path = require("path"); module.exports = { publicPath: "", css: { sourceMap: process.env.NODE_ENV !== "production" }, configureWebpack: { resolve: { alias: { "@fonts": path.resolve(__dirname, "src/assets/fonts/"), "@img": path.resolve(__dirname, "src/assets/img/"), "@scss": path.resolve(__dirname, "src/scss/"), "@data": path.resolve(__dirname, "src/data/"), "@mixins": path.resolve(__dirname, "src/mixins/"), "@components": path.resolve(__dirname, "src/components/") } } }, chainWebpack: config => { config.plugin("html").tap(args => { const meta = { title: "Sebin Nyshkim - Reference Page", desc: "The official reference page for Sebin Nyshkim with picture references and in-depth character descriptions", type: "website", url: "https://ref.sebin-nyshkim.net", favicon: "favicon.png", preview: "preview.jpg", twitter: { card: "summary_large_image", creator: "@SebinNyshkim" } }; const links = { icon: { rel: "icon", href: meta.favicon, type: "image/png" }, favicon: { rel: "favicon", href: meta.favicon, type: "image/png" } }; args[0].title = meta.title; args[0].links = links; args[0].meta = { "twitter:card": meta.twitter.card, "twitter:creator": meta.twitter.creator, "twitter:description": meta.desc, "twitter:text:title": meta.title, "twitter:image": `${meta.url}/${meta.preview}`, "og:title": meta.title, "og:type": meta.type, "og:url": meta.url, "og:image": `${meta.url}/${meta.preview}`, "og:description": meta.desc }; return args; }); config.module .rule("images") .test(/\.(png|jpe?g|gif|webp|svg)(\?.*)?$/i) .use("image-webpack-loader") .loader("image-webpack-loader") .tap(options => { const newOpts = { mozjpeg: { progressive: true, quality: 75 }, pngquant: { quality: [0.65, 0.9], speed: 4 }, gifsicle: { interlaced: false } }; return { ...options, ...newOpts }; }); } };