import { defineConfig } from "vitepress"; import { withPwa } from "@vite-pwa/vitepress"; import UnoCSS from "unocss/vite"; import { presetUno, presetAttributify, presetIcons } from "unocss"; import { commitRef, meta } from "./constants"; import { pwa } from "./pwa"; import { fileURLToPath } from "url"; import { generateImages, generateMeta } from "./hooks"; import { toggleStarredPlugin } from "./markdown/toggleStarred"; import { base64DecodePlugin } from "./markdown/base64"; export default defineConfig({ title: "FMHY", description: meta.description, titleTemplate: ":title • freemediaheckyeah", lang: "en-US", lastUpdated: true, cleanUrls: true, appearance: "dark", srcExclude: ["readme.md", "single-page"], ignoreDeadLinks: true, metaChunk: true, sitemap: { hostname: meta.hostname, }, head: [ ["meta", { name: "theme-color", content: "#7bc5e4" }], ["meta", { name: "og:type", content: "website" }], ["meta", { name: "og:locale", content: "en" }], ["link", { rel: "icon", href: "/test.png" }], // PWA ["link", { rel: "icon", href: "/test.png", type: "image/svg+xml" }], ["link", { rel: "alternate icon", href: "/test.png" }], ["link", { rel: "mask-icon", href: "/test.png", color: "#7bc5e4" }], // prettier-ignore ["meta", { name: "keywords", content: meta.keywords.join(" ") }], ["link", { rel: "apple-touch-icon", href: "/test.png", sizes: "192x192" }], ], transformHead: async (context) => generateMeta(context, meta.hostname), buildEnd: async (context) => { generateImages(context); }, vite: { plugins: [ UnoCSS({ presets: [ presetUno(), presetAttributify(), presetIcons({ scale: 1.2, extraProperties: { display: "inline-block", "vertical-align": "middle", }, }), ], }), ], build: { // Shut the fuck up chunkSizeWarningLimit: Infinity, }, resolve: { alias: [ { find: /^.*VPSwitchAppearance\.vue$/, replacement: fileURLToPath( new URL("./theme/components/ThemeSwitch.vue", import.meta.url), ), }, ], }, }, markdown: { config(md) { md.use(toggleStarredPlugin); md.use(base64DecodePlugin); }, }, themeConfig: { search: { options: { detailedView: true, }, provider: "local", }, footer: { message: `Made with ❤️ (rev: ${commitRef})`, }, outline: "deep", logo: "/fmhy.ico", nav: [ { text: "Beginners Guide", link: "/beginners-guide" }, { text: "Glossary", link: "https://rentry.org/The-Piracy-Glossary" }, { text: "Guides", link: "https://rentry.co/fmhy-guides" }, { text: "Backups", link: "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/backups" }, { text: "Updates", link: "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/updates/" }, ], sidebar: [ { text: "📛 Adblocking / Privacy", link: "/adblockvpnguide" }, { text: "🤖 Artificial Intelligence", link: "/ai" }, { text: "📺 Movies / TV / Anime", link: "/videopiracyguide" }, { text: "🎵 Music / Podcasts / Radio", link: "/audiopiracyguide" }, { text: "🎮 Gaming / Emulation", link: "/gamingpiracyguide" }, { text: "📗 Books / Comics / Manga", link: "/readingpiracyguide" }, { text: "💾 Downloading", link: "/downloadpiracyguide" }, { text: "🌀 Torrenting", link: "/torrentpiracyguide" }, { text: "🧠 Educational", link: "/edupiracyguide" }, { text: "🔧 Tools", link: "/toolsguide" }, { text: "📷 Image Tools", link: "/img-tools" }, { text: "👨‍💻 Developer Tools", link: "/devtools" }, { text: "📱 Android / iOS", link: "/android-iosguide" }, { text: "🐧 Linux / MacOS", link: "/linuxguide" }, { text: "🌍 Non-English", link: "/non-english" }, { text: "📂 Miscellaneous", link: "/miscguide" }, { text: "🔞 NSFW", link: "/nsfwpiracy" }, { text: "⚠️ Unsafe Sites", link: "/unsafesites" }, { text: "🔑 Base64", link: "/base64" }, { text: "📦 Storage", link: "/storage" }, ], socialLinks: [ { icon: "github", link: "https://github.com/fmhy/FMHYEdit" }, { icon: "discord", link: "https://discord.gg/Stz6y6NgNg" }, { icon: { svg: '', }, link: "https://reddit.com/r/FREEMEDIAHECKYEAH", }, ], ...pwa, }, });