A web app for writing and sharing 301+ character Bluesky posts.
1import { resolve } from "node:path";
2
3import tailwindcss from "@tailwindcss/vite";
4import { TanStackRouterVite } from "@tanstack/router-plugin/vite";
5import viteReact from "@vitejs/plugin-react";
6import AutoImport from 'unplugin-auto-import/vite'
7import IconsResolver from 'unplugin-icons/resolver'
8import Icons from 'unplugin-icons/vite'
9import { defineConfig } from "vite";
10
11import { generateMetadataPlugin } from "./oauthdev.mts";
12
13const PROD_URL = "https://skeetlonger.app"
14//This will need to update every time you start the ngrok tunnel
15const DEV_URL = "https://skeetlonger.app"
16
17function shp(url: string): string {
18 return url.replace(/^https?:\/\//, '');
19}
20
21// https://vite.dev/config/
22export default defineConfig({
23 plugins: [
24 generateMetadataPlugin({
25 prod: PROD_URL,
26 dev: DEV_URL,
27 }),
28 TanStackRouterVite({ autoCodeSplitting: true }),
29 viteReact({
30 babel: {
31 plugins: ['babel-plugin-react-compiler'],
32 },
33 }),
34 tailwindcss(),
35 AutoImport({
36 include: [
37 /\.[tj]sx?$/, // .ts, .tsx, .js, .jsx
38 ],
39 resolvers: [
40 IconsResolver({
41 prefix: 'Icon',
42 extension: 'jsx',
43 }),
44 ],
45 dts: 'src/auto-imports.d.ts',
46 }),
47 Icons({
48 autoInstall: true,
49 compiler: 'jsx',
50 jsx: 'react'
51 }),
52 ],
53 // test: {
54 // globals: true,
55 // environment: 'jsdom',
56 // },
57 resolve: {
58 alias: {
59 "@": resolve(__dirname, "./src"),
60 "~": resolve(__dirname, "./src"),
61 },
62 },
63 server: {
64 allowedHosts: [shp(PROD_URL),shp(DEV_URL)],
65 },
66 css: {
67 devSourcemap: true,
68 },
69})