Files
P2Pix-Front-End/vite.config.ts

60 lines
1.5 KiB
TypeScript

import { fileURLToPath, URL } from 'node:url';
import { execSync } from 'node:child_process';
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import vueJsx from '@vitejs/plugin-vue-jsx';
import tailwindcss from '@tailwindcss/vite';
import svgLoader from 'vite-svg-loader';
function sh(cmd: string): string {
try {
return execSync(cmd, { stdio: ['ignore', 'pipe', 'ignore'] })
.toString()
.trim();
} catch {
return '';
}
}
function getAppVersion(): string {
const tag = sh('git tag --sort=-version:refname').split('\n')[0] || '';
const shortSha = sh('git rev-parse --short HEAD');
const tagSha = tag ? sh(`git rev-list -n 1 ${tag}`) : '';
const headSha = sh('git rev-parse HEAD');
if (tag && tagSha === headSha) return tag;
if (tag && shortSha) return `${tag}+${shortSha}`;
return shortSha || 'dev';
}
// https://vitejs.dev/config/
export default defineConfig({
base: './',
build: {
target: 'esnext',
},
define: {
__APP_VERSION__: JSON.stringify(getAppVersion()),
},
optimizeDeps: {
esbuildOptions: {
target: 'esnext',
define: {
global: 'globalThis',
},
supported: {
bigint: true,
},
},
},
plugins: [vue(), vueJsx(), tailwindcss(), svgLoader()],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url)),
'viem/errors': fileURLToPath(
new URL('./node_modules/viem/errors', import.meta.url),
),
},
},
});