81 lines
2.4 KiB
TypeScript
81 lines
2.4 KiB
TypeScript
import path from 'node:path';
|
|
import { visualizer } from "rollup-plugin-visualizer";
|
|
import { PluginOption, UserConfig, defineConfig } from 'vite';
|
|
import react from '@vitejs/plugin-react-swc';
|
|
import tsconfigPaths from 'vite-tsconfig-paths';
|
|
import { getFxsPaths, licenseBanner } from '../scripts/build/utils';
|
|
import { parseTxDevEnv } from '../shared/txDevEnv';
|
|
process.loadEnvFile('../.env');
|
|
|
|
//Check if TXDEV_FXSERVER_PATH is set
|
|
const txDevEnv = parseTxDevEnv();
|
|
if (!txDevEnv.FXSERVER_PATH) {
|
|
console.error('Missing TXDEV_FXSERVER_PATH env variable.');
|
|
process.exit(1);
|
|
}
|
|
|
|
const baseConfig = {
|
|
build: {
|
|
emptyOutDir: true,
|
|
reportCompressedSize: false,
|
|
outDir: '../dist/nui',
|
|
minify: true as boolean,
|
|
target: 'chrome103',
|
|
sourcemap: false,
|
|
|
|
rollupOptions: {
|
|
output: {
|
|
banner: licenseBanner('..', true),
|
|
//Doing this because fxserver's cicd doesn't wipe the dist folder
|
|
entryFileNames: `[name].js`,
|
|
chunkFileNames: `[name].js`,
|
|
assetFileNames: '[name].[ext]',
|
|
}
|
|
},
|
|
},
|
|
base: '/nui/',
|
|
clearScreen: false,
|
|
plugins: [
|
|
tsconfigPaths({
|
|
projects: ['./', '../shared']
|
|
}),
|
|
react(),
|
|
visualizer({
|
|
// template: 'flamegraph',
|
|
// template: 'sunburst',
|
|
gzipSize: true,
|
|
filename: '../.reports/nui_bundle.html',
|
|
}),
|
|
] as PluginOption[], //i gave up
|
|
} satisfies UserConfig;
|
|
|
|
// https://vitejs.dev/config/
|
|
export default defineConfig(({ command, mode }) => {
|
|
if (mode === 'devNuiBrowser') {
|
|
console.log('Launching NUI in browser mode')
|
|
return baseConfig
|
|
}
|
|
|
|
if (mode === 'development') {
|
|
let devDeplyPath: string;
|
|
try {
|
|
//Extract paths and validate them
|
|
const fxsPaths = getFxsPaths(txDevEnv.FXSERVER_PATH);
|
|
devDeplyPath = path.join(fxsPaths.monitor, 'nui');
|
|
} catch (error) {
|
|
console.error('Could not extract/validate the fxserver and monitor paths.');
|
|
console.error(error);
|
|
process.exit(1);
|
|
}
|
|
|
|
baseConfig.build.outDir = devDeplyPath;
|
|
baseConfig.build.minify = false;
|
|
|
|
//DEBUG sourcemap is super slow
|
|
// baseConfig.build.sourcemap = true;
|
|
return baseConfig;
|
|
} else {
|
|
return baseConfig;
|
|
}
|
|
})
|