added systemd service howto traefik nginix set_real_ip_from improved readme visuals fixed on mobile labels removed updated readme fixed visuals overlay for the hotkey disable screen lock clean up git precommit hooks clean up clean up update check for update feature added build-time information fixed date clean up added hook script fix fix fix hooks fixed webhook setup players stay in run all timers mode mqtt mqtt allways connected mqtt messages work capturing mqtt in edit player mqtt in Setup updated readme
61 lines
1.8 KiB
JavaScript
61 lines
1.8 KiB
JavaScript
import { defineConfig } from 'vite';
|
|
import vue from '@vitejs/plugin-vue';
|
|
import fs from 'fs';
|
|
import { resolve } from 'path';
|
|
|
|
const packageJson = JSON.parse(fs.readFileSync('./package.json', 'utf8'));
|
|
const appVersion = packageJson.version;
|
|
|
|
const now = new Date();
|
|
const dateTimeFormat = new Intl.DateTimeFormat('sk-SK', {
|
|
year: 'numeric', month: '2-digit', day: '2-digit',
|
|
hour: '2-digit', minute: '2-digit', second: '2-digit',
|
|
hour12: false
|
|
});
|
|
|
|
const parts = dateTimeFormat.formatToParts(now);
|
|
let day = '', month = '', year = '', hour = '', minute = '', second = '';
|
|
|
|
parts.forEach(part => {
|
|
switch (part.type) {
|
|
case 'day': day = part.value; break;
|
|
case 'month': month = part.value; break;
|
|
case 'year': year = part.value; break;
|
|
case 'hour': hour = part.value; break;
|
|
case 'minute': minute = part.value; break;
|
|
case 'second': second = part.value; break;
|
|
}
|
|
});
|
|
|
|
// Assemble the date part without unwanted spaces
|
|
const appBuildTime = `${day}.${month}.${year} ${hour}:${minute}:${second}`;
|
|
|
|
export default defineConfig({
|
|
plugins: [vue()],
|
|
server: {
|
|
port: 8080
|
|
},
|
|
define: {
|
|
'import.meta.env.VITE_APP_BUILD_TIME': JSON.stringify(appBuildTime),
|
|
'__APP_CACHE_VERSION__': JSON.stringify(`nexus-timer-cache-v${appVersion}-${Date.now()}`)
|
|
},
|
|
build: {
|
|
rollupOptions: {
|
|
input: {
|
|
main: resolve(__dirname, 'index.html'),
|
|
sw: resolve(__dirname, 'src/sw.js')
|
|
},
|
|
output: {
|
|
entryFileNames: assetInfo => {
|
|
if (assetInfo.name === 'sw') {
|
|
return 'service-worker.js';
|
|
}
|
|
return 'assets/[name]-[hash].js';
|
|
},
|
|
chunkFileNames: 'assets/[name]-[hash].js',
|
|
assetFileNames: 'assets/[name]-[hash].[ext]',
|
|
}
|
|
},
|
|
emptyOutDir: true,
|
|
}
|
|
}); |