Compare commits

..

2 Commits

Author SHA1 Message Date
kura
40a181dbcb 加入静态文件编译 2026-05-11 18:23:29 +08:00
kura
0ae93f9bae 新增sw的排除 2026-05-11 17:42:10 +08:00
4 changed files with 88 additions and 26 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 362 KiB

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 MiB

After

Width:  |  Height:  |  Size: 582 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 356 KiB

After

Width:  |  Height:  |  Size: 72 KiB

View File

@ -1,45 +1,107 @@
import { defineConfig } from 'vite'
import basicSsl from '@vitejs/plugin-basic-ssl'
import vue from '@vitejs/plugin-vue'
import { VitePWA } from 'vite-plugin-pwa'
import { defineConfig } from "vite";
import basicSsl from "@vitejs/plugin-basic-ssl";
import vue from "@vitejs/plugin-vue";
import { VitePWA } from "vite-plugin-pwa";
import {
copyFileSync,
mkdirSync,
writeFileSync,
readdirSync,
cpSync,
} from "node:fs";
const siteUrl = "https://explorer.kuraa.cc";
function generateStaticFiles() {
return {
name: "generate-static-files",
closeBundle() {
const aboutDir = new URL("./dist/about/", import.meta.url);
mkdirSync(aboutDir, { recursive: true });
cpSync(
new URL("./static/", import.meta.url),
new URL("./dist/static/", import.meta.url),
{
recursive: true,
},
);
const files = readdirSync(new URL("./readme/", import.meta.url));
files.forEach((file) => {
copyFileSync(
new URL(`./readme/${file}`, import.meta.url),
new URL(`./dist/about/${file}`, import.meta.url),
);
});
const lastmod = new Date().toISOString().slice(0, 10);
const sitemap = `<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="https://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>${siteUrl}/</loc>
<lastmod>${lastmod}</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>${siteUrl}/about/</loc>
<lastmod>${lastmod}</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
`;
const robots = `User-agent: *
Allow: /
Sitemap: ${siteUrl}/sitemap.xml
`;
writeFileSync(new URL("./dist/sitemap.xml", import.meta.url), sitemap);
writeFileSync(new URL("./dist/robots.txt", import.meta.url), robots);
},
};
}
// https://vitejs.dev/config/
export default defineConfig({
base: './',
base: "./",
build: {
// 开发阶段启用源码映射https://uniapp.dcloud.net.cn/tutorial/migration-to-vue3.html#需主动开启-sourcemap
sourcemap: process.env.NODE_ENV === 'development',
sourcemap: process.env.NODE_ENV === "development",
},
plugins: [
vue(),
basicSsl(),
generateStaticFiles(),
VitePWA({
registerType: 'autoUpdate',
registerType: "autoUpdate",
manifest: {
name: 'P2P Explorer',
short_name: 'P2P Explorer',
description: 'P2P文件传输与浏览工具',
theme_color: '#f5f5f5',//米色
background_color: '#f5f5f5',
name: "P2P Explorer",
short_name: "P2P Explorer",
description: "P2P文件传输与浏览工具",
theme_color: "#f5f5f5", //米色
background_color: "#f5f5f5",
icons: [
{
src: '/static/icon64.png',
sizes: '64x64',
type: 'image/png'
src: "/static/icon64.png",
sizes: "64x64",
type: "image/png",
},
{
src: '/static/icon256.png',
sizes: '256x256',
type: 'image/png'
}
]
src: "/static/icon256.png",
sizes: "256x256",
type: "image/png",
},
],
},
workbox: {
globPatterns: ['**/*.{js,css,html,ico,png,svg,webp}'],
runtimeCaching: []
}
})
globPatterns: ["**/*.{js,css,html,ico,png,svg,webp}"],
navigateFallbackDenylist: [/^\/about(?:\/|$)/],
runtimeCaching: [],
},
}),
],
server: {
host: '0.0.0.0',
host: "0.0.0.0",
},
})
});