🔧 refactor: Build Process and Static Asset Handling (#7605)

* 🔧 chore: Update build script to include post-build image removal

* refactor: staticCache middleware with options and special handling for manifest/sw/index files

* refactor(pwa): optimize service worker caching strategy

* refactor: streamline post-build process and update public directory handling

* chore: remove external images from rollupOptions in Vite config

* chore: enhance logging message in post-build script for clarity
This commit is contained in:
Danny Avila 2025-05-28 09:27:12 -04:00
parent 2f462c9b3c
commit f556aaeaea
No known key found for this signature in database
GPG key ID: BF31EEB2C5CA0956
4 changed files with 64 additions and 13 deletions

View file

@ -8,7 +8,7 @@ import { nodePolyfills } from 'vite-plugin-node-polyfills';
import type { Plugin } from 'vite';
// https://vitejs.dev/config/
export default defineConfig({
export default defineConfig(({ command }) => ({
server: {
host: 'localhost',
port: 3090,
@ -37,13 +37,21 @@ export default defineConfig({
enabled: false, // disable service worker registration in development mode
},
useCredentials: true,
includeManifestIcons: false,
workbox: {
globPatterns: ['**/*'],
globPatterns: [
'**/*.{js,css,html}',
'assets/favicon*.png',
'assets/icon-*.png',
'assets/apple-touch-icon*.png',
'assets/maskable-icon.png',
'manifest.webmanifest',
],
globIgnores: ['images/**/*', '**/*.map'],
maximumFileSizeToCacheInBytes: 4 * 1024 * 1024,
navigateFallbackDenylist: [/^\/oauth/],
},
includeAssets: ['**/*'],
includeAssets: [],
manifest: {
name: 'LibreChat',
short_name: 'LibreChat',
@ -94,14 +102,13 @@ export default defineConfig({
template: 'treemap', // 'treemap' | 'sunburst' | 'network'
}),
].filter(Boolean),
publicDir: './public',
publicDir: command === 'serve' ? './public' : false,
build: {
sourcemap: process.env.NODE_ENV === 'development',
outDir: './dist',
minify: 'terser',
rollupOptions: {
preserveEntrySignatures: 'strict',
// external: ['uuid'],
output: {
manualChunks(id: string) {
if (id.includes('node_modules')) {
@ -230,10 +237,10 @@ export default defineConfig({
resolve: {
alias: {
'~': path.join(__dirname, 'src/'),
$fonts: '/fonts',
$fonts: path.resolve(__dirname, 'public/fonts'),
},
},
});
}));
interface SourcemapExclude {
excludeNodeModules?: boolean;