bolt.diy/vite.config.ts
2025-03-30 05:31:56 -07:00

69 lines
1.7 KiB
TypeScript

import { vitePlugin as remixVitePlugin } from '@remix-run/dev';
import { vercelPreset } from '@vercel/remix/vite';
import UnoCSS from 'unocss/vite';
import { defineConfig } from 'vite';
import { optimizeCssModules } from 'vite-plugin-optimize-css-modules';
import { sentryVitePlugin } from '@sentry/vite-plugin';
import tsconfigPaths from 'vite-tsconfig-paths';
import * as dotenv from 'dotenv';
import { execSync } from 'child_process';
dotenv.config();
// Get git hash with fallback
const getGitHash = () => {
try {
return execSync('git rev-parse --short HEAD').toString().trim();
} catch {
return 'no-git-info';
}
};
export default defineConfig((config) => {
return {
define: {
__COMMIT_HASH: JSON.stringify(getGitHash()),
__APP_VERSION: JSON.stringify(process.env.npm_package_version),
// 'process.env': JSON.stringify(process.env)
},
build: {
target: 'esnext',
sourcemap: true,
},
plugins: [
remixVitePlugin({
future: {
v3_fetcherPersist: true,
v3_relativeSplatPath: true,
v3_throwAbortReason: true,
v3_lazyRouteDiscovery: true,
},
presets: [vercelPreset()],
}),
UnoCSS(),
tsconfigPaths(),
config.mode === 'production' && optimizeCssModules({ apply: 'build' }),
config.mode === 'production' &&
process.env.SENTRY_AUTH_TOKEN &&
sentryVitePlugin({
authToken: process.env.SENTRY_AUTH_TOKEN,
org: 'replay',
project: 'nut',
}),
],
envPrefix: [
'VITE_',
'SUPABASE_URL',
'SUPABASE_ANON_KEY',
],
css: {
preprocessorOptions: {
scss: {
api: 'modern-compiler',
},
},
},
};
});