import react from "@vitejs/plugin-react"; import * as path from "node:path"; import { defineConfig, splitVendorChunkPlugin } from "vite"; import { VitePWA as vitePwaPlugin } from "vite-plugin-pwa"; const PRODUCTION = "production"; const DEVELOPMENT = "development"; const environment = process.env.NODE_ENV === PRODUCTION ? PRODUCTION : DEVELOPMENT; const is_production = environment === PRODUCTION; const root = `${process.cwd()}/src`; const dist = `${process.cwd()}/dist`; export default defineConfig({ build: { assetsDir: "assets", chunkSizeWarningLimit: 500, emptyOutDir: true, minify: is_production ? "terser" : undefined, outDir: dist, rollupOptions: { input: { index: `${path.resolve(root, "index.html")}/`, }, output: { assetFileNames: is_production ? "assets/[hash][extname]" : "assets/[name]-[hash][extname]", chunkFileNames: is_production ? "assets/[hash].js" : "assets/[name]-[hash].js", entryFileNames: "assets/[name].[hash].js", manualChunks: { vendor: ["react", "react-dom", "wouter"], emotion: ["@emotion/css", "@emotion/react", "@emotion/styled", "twin.macro"], }, }, }, terserOptions: is_production ? { compress: { drop_console: true, }, } : undefined, }, plugins: [ react({ babel: { plugins: [ "babel-plugin-macros", [ "@emotion/babel-plugin-jsx-pragmatic", { export: "jsx", import: "__cssprop", module: "@emotion/react", }, ], ["@babel/plugin-transform-react-jsx", { pragma: "__cssprop" }, "twin.macro"], ], }, }), vitePwaPlugin({ registerType: "autoUpdate", workbox: { inlineWorkboxRuntime: true, }, manifest: { name: "Re:ROAD", short_name: "Re:ROAD", icons: [ { src: "/seo/android-chrome-192x192.png", sizes: "192x192", type: "image/png", }, { src: "/seo/android-chrome-512x512.png", sizes: "512x512", type: "image/png", }, ], theme_color: "#ffcb00", background_color: "#ffcb00", start_url: "https://reroad.site/", display: "standalone", description: "Re:ROAD、それぞれが色付けた3年ぶりの鈴鹿高専祭。", lang: "ja", }, }), splitVendorChunkPlugin(), ], root, envDir: process.cwd(), publicDir: `${process.cwd()}/public`, server: { port: 3000, }, });