mirror of
https://github.com/fromchat-messenger/web.git
synced 2026-09-22 19:15:08 +03:00
Improve service worker type safety
This commit is contained in:
+45
-2
@@ -3,6 +3,9 @@ import { createHtmlPlugin } from "vite-plugin-html";
|
||||
import autoprefixer from "autoprefixer";
|
||||
import electron from "vite-plugin-electron/simple";
|
||||
import react from "@vitejs/plugin-react";
|
||||
import { resolve } from "path";
|
||||
|
||||
const serviceWorkerPath = resolve(__dirname, "src/service-worker/service-worker.ts");
|
||||
|
||||
const plugins: PluginOption[] = [
|
||||
react(),
|
||||
@@ -17,7 +20,31 @@ const plugins: PluginOption[] = [
|
||||
minifyCSS: true,
|
||||
minifyJS: true
|
||||
}
|
||||
})
|
||||
}),
|
||||
{
|
||||
name: 'service-worker-redirect',
|
||||
configureServer(server) {
|
||||
server.middlewares.use(async (req, res, next) => {
|
||||
if (req.url === '/assets/serviceWorker.js') {
|
||||
try {
|
||||
const traspiled = await server.transformRequest(serviceWorkerPath);
|
||||
|
||||
res.writeHead(200, {
|
||||
'Content-Type': "application/javascript"
|
||||
});
|
||||
res.end(traspiled!.code);
|
||||
} catch (e) {
|
||||
try {
|
||||
res.writeHead(500);
|
||||
res.end();
|
||||
} catch (e) {}
|
||||
}
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
if (process.env.VITE_ELECTRON) {
|
||||
@@ -79,6 +106,22 @@ export default defineConfig({
|
||||
},
|
||||
cssMinify: true,
|
||||
assetsInlineLimit: 0,
|
||||
outDir: process.env.VITE_ELECTRON ? "build/electron/dist" : "build/normal/dist"
|
||||
outDir: process.env.VITE_ELECTRON ? "build/electron/dist" : "build/normal/dist",
|
||||
rollupOptions: {
|
||||
input: {
|
||||
main: resolve(__dirname, "index.html"),
|
||||
serviceWorker: serviceWorkerPath
|
||||
},
|
||||
output: {
|
||||
entryFileNames: (chunkInfo) => {
|
||||
// Проверяем имя чанка
|
||||
if (chunkInfo.name === 'serviceWorker') {
|
||||
return 'assets/serviceWorker.js'; // Указываем фиксированное имя для этого скрипта
|
||||
}
|
||||
// Для остальных файлов используем стандартное именование с хэшем
|
||||
return 'assets/[name]-[hash].js';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user